home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr50 / wbb13.zip / BB.DOC next >
Text File  |  1993-06-04  |  137KB  |  4,819 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver.
  8.           All rights reserved.
  9.  
  10.  
  11.           ORDER INFORMATION
  12.           -------------------------------------------------------
  13.  
  14.           If you find BasicBasic useful registration is requested.
  15.           Through April 30, 1993, you will automatically receive TWO
  16.           updates for your registration fee.  The registration fee
  17.           is $30.00.  Please state the version of the software that
  18.           you currently have(if you have the most recent version we
  19.           begin your upgrades with the next release) and whether 3
  20.           1/2 high density, 3 1/2 low density or  5 1/4 high density
  21.           diskettes are needed.  Illinois residents add 6.25% sales
  22.           tax.  Foreign orders in US funds only.  Foreign orders add
  23.           $5.00 for extra postage.
  24.  
  25.           Send check or money order to:  Mark Davidsaver
  26.                                          213 S. Park Street
  27.                                          Bishop Hill, Il  61419
  28.  
  29.           or phone with MC/Visa orders to:  (309) 927-3303
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.                                TABLE OF CONTENTS
  76.  
  77.  
  78.                 Summary ................................ 2
  79.  
  80.                 Getting Started Quickly ................ 4
  81.  
  82.                 BasicBasic Basics ...................... 6
  83.  
  84.                 Windows Metacommands ................... 8
  85.  
  86.                 Metacommands ........................... 9
  87.  
  88.                 Statement and Function Reference .......10
  89.  
  90.                 Graphics Programming for Beginners .....39
  91.  
  92.                 Programming Buttons ....................42
  93.  
  94.                 Programming Menus ......................44
  95.  
  96.                 Programming Dialog Boxes ...............46
  97.  
  98.                 Communications Programming .............52
  99.  
  100.                 Windows and Graphics ...................53
  101.  
  102.                 Bitmaps ................................57
  103.  
  104.                 Windows and Fonts ......................61
  105.  
  106.                 Chaining and Common ....................65
  107.  
  108.                 Default Windows Font....................66
  109.                  (386 Enhanced Mode Font information)
  110.  
  111.                 Errors .................................68
  112.  
  113.                 Keyboard codes .........................70
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.                                       1
  128.  
  129.  
  130.  
  131.  
  132.  
  133.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.           SUMMARY
  141.           -------------------------------------------------------
  142.  
  143.           BasicBasic is an easy to program, Basic-like language for
  144.           DOS or Windows.  BasicBasic creates EXE files which can be
  145.           run under DOS or Windows.  BasicBasic supports both
  146.           graphics and text screens.  BasicBasic contains a subset
  147.           of Microsoft Basic as well as many new commands unique to
  148.           BasicBasic.
  149.  
  150.           BasicBasic is an easy way to develop small to medium size
  151.           programs without regard for which environment they will
  152.           run under.  BasicBasic supports mouse and buttons in both
  153.           DOS and Windows and Menus in Windows.  Several commands
  154.           from more advanced Basics are also included (such as the
  155.           DIR$ function and binary file I/O from Microsoft
  156.           Professional Basic).
  157.  
  158.           Programs written for BasicBasic can run under either DOS
  159.           or Windows.  The compiler, itself, may run under either
  160.           DOS or Windows.
  161.  
  162.           In addition to BasicBasic you will need a source editor
  163.           for the environment you are running under.  BasicBasic
  164.           accepts source from standard ASCII files.
  165.  
  166.           Here is a list of statements and functions the BasicBasic
  167.           compiler recognizes.  Refer to the detailed description
  168.           later on for the exact syntax recognized.
  169.  
  170.           ABS   ADDSUBMENU   ASC   ATN   BEEP   BITMAPC   BITMAPH
  171.           CBUTTON   CHAIN   CHDIR   CHDRIVE   CHR$   CIRCLE   CLOSE
  172.           CLS   COLOR   COMMAND$   COMMON   COMSTATI   COPYBITS
  173.           COS   CREATEBITMAP   CREATEFONT   CSRLIN   CURDIR$   DATA
  174.           DATE$   DBUTTON  DIALOG   DIALOG$   DIM   DIR$   DLEN
  175.           EOF   FIELD   FIX   FONT   FONT$   FOR..NEXT  FREEMEM
  176.           GET   GET #   GOSUB..RETURN   GOTO   IF..THEN..ELSE
  177.           INKEY$   INPUT   INPUT #   INPUT$   INSTR  INT   KILL
  178.           LEFT$   LEN   LET   LINE   LINE INPUT #   LOADBITMAP   LOC
  179.           LOCATE   LSET   MAINMENU   MENUITEMGRAY   MENUITEMON
  180.           MID$   MKDIR   MOUSEB  MOUSEON   MOUSEX   MOUSEY   ONPAINT
  181.           OPEN   OPEN "COMn:"   OPENFILEREAD   OPENFILESAVE   PAINT
  182.           PALETTE   POINT   POS   POSITION   POINT   PRINT #
  183.           LPRINT   PRINT USING  PUT   PUT #   LPRINT USING   PRESET
  184.           PSET   OSTYPE   RADIOON   RADIOOFF   RANDOMIZE   READ
  185.           REM   RESTORE   RETURN   RIGHT$   RMDIR   RND   SCREEN
  186.           SCROLLAREA   SELECTBITMAP   SELECTFONT   SETERRLEVEL
  187.           SHELL  SIN   SOUND   SPACE$   STOP   STOREBITMAP   STR$
  188.           STRING$   SYSTEM   TAB   TAN   TIME$  TIMER   UCASE$   VAL
  189.           WRITE #
  190.  
  191.           and the operators     +  -  /  *  \  ^  AND  OR
  192.  
  193.                                       2
  194.  
  195.  
  196.  
  197.  
  198.  
  199.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.                                       3
  260.  
  261.  
  262.  
  263.  
  264.  
  265.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.           GETTING STARTED QUICKLY
  273.           -------------------------------------------------------
  274.  
  275.           The easiest way to run BasicBasic is to have all required
  276.           files in one directory.  If you are not going to be
  277.           running or compiling under either DOS or Windows you do
  278.           not need the files specific to them.  BasicBasic files
  279.           required for each operating environment are:
  280.  
  281.                      FILE        USE
  282.                      _____       __________________________________
  283.  
  284.                      BB.EXE   \_ required to compile under DOS
  285.                    BB13.STB   /
  286.  
  287.                 BBLIB13.EXE    _ runtime required to run application
  288.                                  under DOS
  289.  
  290.  
  291.                     WBB.EXE   \_ required to compile under Windows
  292.                    BB13.STB   /
  293.  
  294.                WBBLIB13.EXE    _ runtime required to run application
  295.                                  under Windows
  296.                     WBB.FON    - Fonts required to support graphics
  297.                                  screens under Windows.
  298.  
  299.           You may also want the provided sample programs.
  300.           (SAMPLE1.BAS, SAMPLE2.BAS, etc.)
  301.  
  302.           Before compiling a program you must have the Source in an
  303.           ASCII file.  Most word processors have an option to allow
  304.           reading/writing of ASCII files.  Windows Write, for
  305.           example, allows you to save in Text Only format which is
  306.           ASCII.  When opening ASCII files you must be sure to tell
  307.           Write to NOT convert file to Write format.
  308.  
  309.           Several sample programs are provided to let you get
  310.           started quickly.  The sample programs have file names of
  311.           the format SAMPLEnn.BAS.
  312.  
  313.             SAMPLE1.BAS
  314.             SAMPLE2.BAS\__ Basic examples using text screens
  315.             SAMPLE3.BAS/
  316.             SAMPLE4.BAS
  317.  
  318.             SAMPLEB1.BAS
  319.             SAMPLEB2.BAS __ Examples utilizing buttons
  320.             SAMPLEB3.BAS
  321.  
  322.             SAMPLEG1.BAS
  323.             SAMPLEG2.BAS\__ Graphic examples
  324.             SAMPLEG3.BAS/
  325.                                       4
  326.  
  327.  
  328.  
  329.  
  330.  
  331.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  332.  
  333.  
  334.  
  335.  
  336.  
  337.             SAMPLEG4.BAS
  338.  
  339.             SAMPLEM1.BAS -- Menu example
  340.  
  341.             SAMPLEF1.BAS -- Windows multiple font example
  342.  
  343.             SAMPLED1.BAS\
  344.             SAMPLED2.BAS -- Dialog/Menu/Loadbitmap/Storebitmap
  345.             SAMPLED3.BAS/   examples.
  346.  
  347.           To compile a program under DOS type BB.  When requested
  348.           enter the file name you want to compile.  If no extension
  349.           is given the compiler will assume .BAS.  You can also
  350.           enter the file name you want to compile as part of the
  351.           start command.  e.g.   BB SAMPLE1.BAS.  The executable
  352.           file created will have the same name as the source file.
  353.  
  354.           Under Windows you must compile using the program WBB.EXE.
  355.           You may install this in a group with the Program Manager
  356.           or run WBB seperately.  When compile is completed you may
  357.           either execute the program or restart to compile another
  358.           program.
  359.  
  360.           IMPORTANT!  Whether you are compiling under DOS or Windows
  361.           only one EXE file will be created.  This file will have
  362.           the same name as the source file with an extension of
  363.           .EXE.  This EXE file can be executed under either DOS or
  364.           Windows as long as the appropriate runtime module is
  365.           present (BBLIB13.EXE for DOS or WBBLIB13.EXE for Windows).
  366.           If you are using graphics screens running under Windows
  367.           you will also need the file WBB.FON.
  368.  
  369.           DOS programs require the presence of BBLIB13.EXE to run
  370.           and Windows programs require the presence of WBBLIB13.EXE
  371.           to run.  If this runtime library file is not found an
  372.           error message will be returned (In Windows the absence of
  373.           WBBLIB13.EXE is indicated by 4 short beeps and the program
  374.           does not execute.  You might also get the 4 short beeps if
  375.           you are running a program directly from the compiler and
  376.           do not have enough memory.  In this case exit the compiler
  377.           and run the compiled program seperately.).
  378.  
  379.           If you are running Windows 3.1 in 386 Enhanced Mode and
  380.           using text only screens see the section on Default Windows
  381.           Font for important information on using different font
  382.           sizes.
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.                                       5
  392.  
  393.  
  394.  
  395.  
  396.  
  397.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.           BasicBasic Basics
  405.           -------------------------------------------------------
  406.  
  407.           BasicBasic is intended to be a subset of Microsoft Basic.
  408.           More statements and functions will be added with each
  409.           release.  Depending on your religion you may or may not be
  410.           happy to see that GOTO is supported.  BasicBasic's syntax
  411.           is 'almost' the same as Microsoft's Basic.  Here are some
  412.           known syntax differences:
  413.  
  414.                BasicBasic scans expressions from left to right the
  415.                same as Microsoft Basic, however, BasicBasic checks
  416.                all multiplies before divides and all minus signs
  417.                before addition.
  418.  
  419.                BasicBasic does not support the underscore (_) line
  420.                extension character.
  421.  
  422.           Most functions and statements have the same syntax as
  423.           Microsoft Basic.  You should check the Statement and
  424.           Function Reference section for details on syntax.
  425.  
  426.           Date types supported are integer (% suffix), long integer
  427.           (& suffix), single precision (no suffix), and string ($
  428.           suffix).  Double precision numbers are not supported in
  429.           this version.
  430.  
  431.           BasicBasic does not support a standard array of size 10.
  432.           Every array must be explicitly dimensioned with a DIM
  433.           statement.
  434.  
  435.           CAPACITIES
  436.  
  437.              General limits:
  438.  
  439.                      Maximum number of arrays:  100
  440.                              Total open files:  10
  441.                            Total string space:  approx. 47000 chars.
  442.                 Maximum character string size:  2048
  443.                               Maximum Buttons:  40
  444.  
  445.              Windows only limits:
  446.  
  447.                                 Maximum menus:  6
  448.                       Maximum Items in a menu:  10
  449.                         Maximum Fonts Defined:  10
  450.  
  451.  
  452.  
  453.           RESERVED WORDS
  454.  
  455.           All names of statements and functions are reserved words
  456.           and may not be used as variable names.  ERR is a special
  457.                                       6
  458.  
  459.  
  460.  
  461.  
  462.  
  463.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  464.  
  465.  
  466.  
  467.  
  468.  
  469.           case.  This is a system wide variable used to return error
  470.           information to BasicBasic programs.  See the command
  471.           SETERRLEVEL for more complete information.
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.                                       7
  524.  
  525.  
  526.  
  527.  
  528.  
  529.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.           WINDOWS METACOMMANDS
  537.           -------------------------------------------------------
  538.  
  539.  
  540.           BasicBasic contains several Metacommands to set Windows
  541.           environment parameters.  These commands have no affect on
  542.           execution of the program.  All Windows Metacommands have
  543.           the following format:
  544.  
  545.                  REM WINDOWS command
  546.  
  547.           REM WINDOWS NAME name
  548.  
  549.           The window name which the program will display can be
  550.           supplied.  The default is the same as the file name of the
  551.           program.
  552.                    e.g.   REM WINDOWS NAME investments
  553.  
  554.  
  555.           REM WINDOWS size x1,y1,x2,y2
  556.  
  557.           This command allows you to define a portion of the normal
  558.           DOS screen size as the area to be displayed in the Windows
  559.           window.  This is useful if you have a program centered in
  560.           the standard 80x25 DOS screen, but do not use much of the
  561.           border area.  Regular scrolling may not work in windows if
  562.           you define the window size as less than 80x25.  X1 is the
  563.           left column, y1 is the top row, x2 is the right column,
  564.           and y2 is the bottom row.  e.g.  Do NOT use this command
  565.           if your are using the CREATEFONT command.
  566.  
  567.                    e.g.       REM WINDOWS SIZE 10,10,70,15
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.                                       8
  590.  
  591.  
  592.  
  593.  
  594.  
  595.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.           METACOMMANDS
  603.           -------------------------------------------------------
  604.  
  605.           metacommands are preceded by REM and a dollar sign.
  606.  
  607.  
  608.           INCLUDE:
  609.  
  610.             This metacommand allows you to include source from
  611.             another file in the currently compiling file.  files may
  612.             be nexted up to 10 levels deep.
  613.  
  614.               e.g.  REM $INCLUDE: moretext.asc
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.                                       9
  656.  
  657.  
  658.  
  659.  
  660.  
  661.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.           STATEMENT AND FUNCTION REFERENCE
  669.           -------------------------------------------------------
  670.  
  671.           Here is a brief description of available functions and
  672.           statements.  More detailed information on those not unique
  673.           to BasicBasic can be found in standard Basic reference
  674.           books.
  675.  
  676.  
  677.  
  678.           ABS(numericexpression)
  679.  
  680.             This function returns the absolute value of the numeric
  681.             expression.
  682.  
  683.  
  684.  
  685.           ADDSUBMENU  menunumber,stringexpression,keycode
  686.  
  687.             Addsubmenu adds an item to a pull down menu with the
  688.             text stringexpression.  When the user selects this menu
  689.             item the keycode will be returned at the next INKEY$
  690.             function call.  See the section 'Programming Menus' for
  691.             more details
  692.  
  693.  
  694.  
  695.           ASC(string expression)
  696.  
  697.             This function returns a numerical value which is the
  698.             ASCII code for the first character of string expression.
  699.  
  700.  
  701.  
  702.           ATN(numeric expression)
  703.  
  704.             This function returns the arctangent of a numeric
  705.             expression.
  706.  
  707.  
  708.  
  709.           BEEP
  710.  
  711.             This statement sounds the ASCII bell character.
  712.  
  713.  
  714.  
  715.           BITMAPC(filename,longinteger array)
  716.  
  717.             This function returns colors values for a disk file
  718.             device independent bitmap.
  719.  
  720.             e.g.     A=BITMAPC("C:\WINDOWS\CARS.BMP",COLORS&(0))
  721.                                       10
  722.  
  723.  
  724.  
  725.  
  726.  
  727.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.             Each element of the array COLORS& will contain one RGB
  735.             color value up to the total colors available (see
  736.             BITMAPH).  See the section BITMAPS for further
  737.             information.
  738.  
  739.  
  740.  
  741.           BITMAPH(filename,longinteger array)
  742.  
  743.  
  744.             This function returns the bitmap header from a file
  745.             device independent bitmap.
  746.  
  747.             e.g.   A=BITMAPC("C:\WINDOWS\CARS.BMP",HEADER&(0))
  748.  
  749.             The data returned are:
  750.  
  751.                 0 - size of bitmapinfoheader
  752.                 1 - width in pixels
  753.                 2 - height in pixels
  754.                 3 - always 1
  755.                 4 - color bits per pixel
  756.                 5 - compression flag
  757.                 6 - total bytes in image
  758.  
  759.             See the section BITMAPS for further information.
  760.  
  761.  
  762.  
  763.  
  764.           CBUTTON "name",keycode,0,"type",0,left,top,xsize,ysize,
  765.                   forecolor,backcolor
  766.  
  767.             This command defines and creates a button on screen.
  768.             This command is DOS and Windows compatible.  In screen
  769.             mode 0 left,top,xsize,ysize are in character units.  In
  770.             graphics screen modes these must be supplied in pixel
  771.             units.  The name is the text which will be displayed in
  772.             the button.  When you define a button you must define
  773.             the keycode which will be returned when that button is
  774.             pressed by the user.  Legal button types are "Radio",
  775.             "Push" or "Invisible".  Left, top, xsize, ysize define
  776.             the position and size of the button(in character
  777.             position).  Radio buttons may have a foreground and
  778.             background color defined.  If these are left 0 then the
  779.             default colors will be used.  In DOS the colors are also
  780.             used for Pushbuttons.
  781.  
  782.             When the user presses the button the indicated keycode
  783.             will be returned to the INKEY$ function.  If a button is
  784.             pressed while executing the INPUT command the input will
  785.             be ended, but the keycode will not be returned until a
  786.             subsequent INKEY$ function is called.  Instead of using
  787.                                       11
  788.  
  789.  
  790.  
  791.  
  792.  
  793.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  794.  
  795.  
  796.  
  797.  
  798.  
  799.             the mouse to press the indicated button, the user can
  800.             also press the keyboard key which returns the indicated
  801.             keycode.
  802.  
  803.             Any key may be defined for a button.  See the section
  804.             "Keyboard codes" for a list of codes recognized by
  805.             BasicBasic.  As an example the uppercase letter 'A'
  806.             would be the keycode 65.  Extended keycodes are
  807.             indicated by adding 1000 to the second part of the code.
  808.             For example F1 would be 1059, or F10 would be 1068.
  809.  
  810.               e.g. CBUTTON "Exit",1068,"Push",0,1,1,8,1,7,4
  811.  
  812.                    Creates a push button on the top line.  Because
  813.                    it is a Push button the color values are ignored
  814.                    in windows, but used in DOS.
  815.  
  816.             See RADIOON and RADIOOFF for instructions on
  817.             checking/unchecking radio buttons.
  818.  
  819.             See the section "Programming Buttons" for more detail on
  820.             programming buttons.
  821.  
  822.             Note that while CBUTTON creates a button it will not
  823.             respond to the mouse button until the function MOUSEON
  824.             has been issued.
  825.  
  826.  
  827.  
  828.           CHAIN  filespec
  829.  
  830.             This command transfers control from the current program
  831.             to another program.  COMMON may be used to pass
  832.             variables between programs.  Files are left open when
  833.             transfering to another program.  See the section
  834.             'Chaining and Common' for more details.
  835.  
  836.                 e.g.  CHAIN "TEST2.EXE"
  837.  
  838.  
  839.  
  840.           CHDIR drive$
  841.  
  842.             This statement changes the default directory for the
  843.             specified drive.  CHDIR statement changes the default
  844.             directory, but not the default drive.
  845.  
  846.  
  847.  
  848.           CHDRIVE drive$
  849.  
  850.             This statement changes the current drive to that given
  851.             in the string expression drive$
  852.  
  853.                                       12
  854.  
  855.  
  856.  
  857.  
  858.  
  859.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.           CHR$(numeric expression)
  868.  
  869.             This function returns the ASCII code for the numeric
  870.             expression.  The returned code is one character.
  871.  
  872.  
  873.  
  874.           CIRCLE [STEP](x1,y),radius,[color],[start],[end],[aspect]
  875.  
  876.             This statement draws a circle, ellipse, or pie section
  877.             on the graphics screen.  (x,y) are the screen
  878.             coordinates of the center of the figure.  Radius is the
  879.             radius in pixels.  Start and End are angles in radians.
  880.             Omiting these results in a complete circle or ellipse.
  881.             You may use Start,End to draw arcs or pie sections.  A
  882.             complete circle has a start randian of 0 and an end
  883.             radian of 6.2832.
  884.  
  885.             If start or end are negative the value is converted to a
  886.             positive number for purposes of drawing the arc, but
  887.             then a line is drawn from the center of the figure to
  888.             the end point of the arc.  PIE figures may be draw in
  889.             this way.
  890.  
  891.               Example of a complete circle, radius 50, color blue
  892.  
  893.                       SCREEN 8
  894.                       CIRCLE (100,100),50,1
  895.  
  896.               Example of pie figure, filled in
  897.  
  898.                       SCREEN 8
  899.                       CIRCLE (100,100),50,1,-.01,-2
  900.                       PAINT (102,98),1,1
  901.  
  902.             Aspect can be used to adjust the ratio of y radius to
  903.             the x radius.  By default BasicBasic sets aspect to a
  904.             number to create round circles for the type of screen
  905.             being used.
  906.  
  907.  
  908.  
  909.           CLOSE #filenumber
  910.  
  911.             This statement terminates I/O to the indicated
  912.             filenumber.  Only one number allowed for each CLOSE
  913.             command.
  914.  
  915.  
  916.  
  917.           CLS
  918.  
  919.                                       13
  920.  
  921.  
  922.  
  923.  
  924.  
  925.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  926.  
  927.  
  928.  
  929.  
  930.  
  931.             This statement clears the screen.  If a scrollable area
  932.             has been define the entire screen is still cleared.
  933.  
  934.  
  935.  
  936.           COLOR foreground,background
  937.  
  938.             The format of this statement varies depending on the
  939.             screen mode you are in.
  940.  
  941.             MODE 0
  942.  
  943.               This statement sets the screen colors to the indicated
  944.               foreground and background colors.  Color values are:
  945.  
  946.                0 - Black
  947.                1 - Blue
  948.                2 - Green
  949.                3 - Cyan
  950.                4 - Red
  951.                5 - Magenta
  952.                6 - Brown
  953.                7 - White
  954.                8 - Gray
  955.                9 - Light Blue
  956.               10 - LIght Green
  957.               11 - Light Cyan
  958.               12 - Light Red
  959.               13 - Light Magenta
  960.               14 - Yellow
  961.               15 - High intensity white
  962.  
  963.             Foreground values can be 0 through 15 and background
  964.             values can be 0 through 15.
  965.  
  966.           MODE 8,9
  967.  
  968.             The first argument (foreground color) is a color
  969.             attribute.  The second argument(background color) is a
  970.             screen color.  For Windows programs see the section
  971.             WINDOWS AND GRAPHICS for additional information on the
  972.             COLOR statement.
  973.  
  974.           MODE 12
  975.  
  976.             Only one argument is used.  The first argument
  977.             (foreground) color is a color attribute.  In this mode
  978.             to change the background color for the entire screen use
  979.             the PALETTE command to change the definition of color
  980.             attribute 0.
  981.  
  982.           MODE 1000
  983.  
  984.             This mode is only supported under Windows.  The first
  985.                                       14
  986.  
  987.  
  988.  
  989.  
  990.  
  991.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  992.  
  993.  
  994.  
  995.  
  996.  
  997.             argument (foreground) is a color attribute.  The second
  998.             arguement (background) is a color attribute.  In this
  999.             mode to change a palette color you must use the PALETTE
  1000.             command.
  1001.  
  1002.  
  1003.  
  1004.           COMMAND$
  1005.  
  1006.             This function returns the command line used to start the
  1007.             program.
  1008.  
  1009.               e.g.  TEST myfile.dat
  1010.  
  1011.               COMMAND$ would return:  myfile.dat
  1012.  
  1013.  
  1014.  
  1015.           COMMON  variablelist
  1016.  
  1017.             Common passes variables to a chained program.
  1018.             Variablelist is a list of variables and arrays whose
  1019.             contents will be preserved when Chaining to a new
  1020.             program.  Only 'blank' common is supported.  A blockname
  1021.             is not allowed.  the SHARED attribute is not allowed.
  1022.             Arrays are indicated by blank parenthesis.  See the
  1023.             section 'Chaining and Common' for more details.
  1024.  
  1025.               e.g.  COMMON A,B,A$,B$()
  1026.  
  1027.  
  1028.  
  1029.           COMSTATI(comnum)
  1030.  
  1031.             This function returns the status of a communications
  1032.             port.  8 bits of data are returned.  These are defined
  1033.             as follows:
  1034.  
  1035.               bit 7 = Data Carrier Detect
  1036.                   6 = Ring Indicator
  1037.                   5 - Data Set Ready
  1038.                   4 - Clear to Sent
  1039.                   3 - Break Detect
  1040.                   2 - Framing Error
  1041.                   1 - Parity Error
  1042.                   0 - Overrun Error
  1043.  
  1044.               e.g.  a=COMSTATI(1)
  1045.  
  1046.  
  1047.  
  1048.           COPYBITS sbm,sx,sy,xlen,ylen,dbm,dx,dy,0
  1049.  
  1050.             This command is ignored under DOS.  This command copies
  1051.                                       15
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.             the contents of one bitmap to another.  The parameter
  1064.             sbm is the source bitmap number and may be either 0, 1,
  1065.             or 2, where 0 is the screen and 1 and 2 are memory
  1066.             bitmaps previously created with the CREATEBITMAP
  1067.             command.  Similarly dbm is the destination bitmap
  1068.             number.  Sx, sy are the coordinates of the upper left
  1069.             corner of the source bitmap to be transfered.  Xlen, and
  1070.             ylen are the number of pixels to copy.  Dx, dy are the
  1071.             coordinates of the upper left corner of the destination.
  1072.  
  1073.             The following example copies a 100 by 100 pixel
  1074.             rectangle starting at 0,0 to a memory bitmap and then
  1075.             copies it back to the screen at x=200 and y=0.
  1076.  
  1077.                  sx=0
  1078.                  sy=0
  1079.                  dx=0
  1080.                  dy=0
  1081.                  copybits 0,sx,sy,100,100,1,dx,dy,0
  1082.                  dx=200
  1083.                  dy=0
  1084.                  copybits 1,sx,sy,100,100,0,dx,dy,0
  1085.  
  1086.  
  1087.  
  1088.  
  1089.           COS(n)
  1090.  
  1091.             This function returns the cosine of an angle expressed
  1092.             in radians.
  1093.  
  1094.  
  1095.  
  1096.           CREATEBITMAP n,0,xsize,ysize
  1097.  
  1098.             This command is ignored under DOS.  Under Windows it
  1099.             creates a memory bitmap of the given size.  The first
  1100.             argument, n, may be either 1 or 2.  The second argument
  1101.             must always be a 0.  You can create a maximum of 2
  1102.             memory bitmaps.  Using the SELECTBITMAP command you can
  1103.             tell BasicBasic to route all screen output to a bitmap
  1104.             instead.  Then you can use the COPYBIT command to
  1105.             quickly place a complex graphic on the screen.
  1106.  
  1107.             Here is an example of a createbitmap command:
  1108.  
  1109.                  pxsize=100
  1110.                  pysize=50
  1111.                  CREATEBITMAP 1,0,pxsize,pysize
  1112.  
  1113.  
  1114.  
  1115.           CREATE FONT
  1116.  
  1117.                                       16
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.             Allows creation of fonts in Windows.  See section
  1130.             WINDOWS AND FONTS for a description of this command.
  1131.  
  1132.  
  1133.  
  1134.           CSRLIN
  1135.  
  1136.             This function gets the current line position of the
  1137.             cursor(starting with 1).  In graphics mode 1000 the
  1138.             pixel line position is returned (starting with 0).
  1139.  
  1140.  
  1141.  
  1142.           CURDIR$[(drive$)]
  1143.  
  1144.             This function returns the path currently is use for the
  1145.             specified drive.  If the optional parameter is omitted
  1146.             then the path for the currently selected drive is
  1147.             returned.
  1148.  
  1149.  
  1150.  
  1151.           DATA
  1152.  
  1153.             This statement is used in conjuction with the READ
  1154.             statement to input numeric or string constants.
  1155.  
  1156.  
  1157.  
  1158.           DATE$
  1159.  
  1160.             This function returns a string of ten characters
  1161.             corresponding to the current computer date.
  1162.  
  1163.  
  1164.  
  1165.           DBUTTON keycode
  1166.  
  1167.             This statement erases a button from the screen (using
  1168.             currently define colors) and disables input from it.
  1169.             The keycode should be the same as that used in the
  1170.             CBUTTON command.  See the section "Programming Buttons"
  1171.             for more information on buttons.
  1172.  
  1173.  
  1174.  
  1175.           DIALOG A$(),x,y,xlen,ylen,id,Header String
  1176.  
  1177.             This statement executes a Dialog.  See the section
  1178.             "Programming Dialog Boxes" for details.  The array a$()
  1179.             contains text which defines the dialog box.  X, y, xlen,
  1180.             ylen are in pixel units in graphics screen modes and
  1181.             character units in screen mode 0.
  1182.  
  1183.                                       17
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.           DIALOG$()
  1198.  
  1199.             This function returns information on a Dialog Control.
  1200.             See the section "Programming Dialog Boxes" for details.
  1201.  
  1202.  
  1203.  
  1204.           DIM variable(subscripts),...
  1205.  
  1206.             Defines arrays.  There is no default array size of 10 in
  1207.             BasicBasic.  Every array must be defined.  SHARED is not
  1208.             supported.
  1209.  
  1210.  
  1211.  
  1212.           DIR$(path,[type])
  1213.               or
  1214.           DIR$
  1215.  
  1216.             This function returns file names.  If no type is
  1217.             specified or type is set to 0 then file names not
  1218.             including system and hidden will be returned.  If no
  1219.             path is specified then the next name using the previous
  1220.             search path will be returned.  Type may be set to a
  1221.             non-zero value to return the names of special classes of
  1222.             files.
  1223.  
  1224.                       type       file type
  1225.                        1         Read Only files
  1226.                        2         Hidden files
  1227.                        3         System files
  1228.                        5         Directories
  1229.                        6         Archive bit set
  1230.  
  1231.  
  1232.  
  1233.           DLEN (string)
  1234.  
  1235.             This function returns the length in pixels of a string.
  1236.             It is intended for use in Windows graphics mode but also
  1237.             works in DOS graphics mode.
  1238.  
  1239.  
  1240.  
  1241.           EOF(filenumber)
  1242.  
  1243.             This function tests for end-of-file.
  1244.  
  1245.  
  1246.  
  1247.           FIELD #filenumber,fieldwidth AS stringvariable...
  1248.  
  1249.                                       18
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.             This statement allocates space for variables in
  1262.             random-access file buffer.  The filenumber is the number
  1263.             under which the file was opened.  Fieldwidth is a number
  1264.             indicating the length of the field and string variable
  1265.             is the name of the field.  Multiple fields can be
  1266.             defined at once.
  1267.  
  1268.                e.g.  OPEN "TEST.DAT" FOR RANDOM AS #1
  1269.                      FIELD #1,18 AS NAME$,18 AS ADDRESS$
  1270.                      LSET NAME$="FRED SMITH"
  1271.                      LSET ADDRESS$="1 MAIN STREET"
  1272.                      PUT #1,1
  1273.                      CLOSE #1
  1274.  
  1275.  
  1276.  
  1277.           FIX(numeric expression)
  1278.  
  1279.             This function returns the integer representation of the
  1280.             value in numeric expression.  -n.x returns n-1 if x>0.
  1281.  
  1282.  
  1283.  
  1284.           FONT(n)
  1285.  
  1286.             This function returns information about a Windows font.
  1287.             See the section WINDOWS AND FONTS for a complete
  1288.             description of this function
  1289.  
  1290.  
  1291.  
  1292.           FONT$(n)
  1293.  
  1294.             This function returns information about a Windows font.
  1295.             See the section WINDOWS AND FONTS for a complete
  1296.             description of this function.
  1297.  
  1298.  
  1299.  
  1300.           FOR..NEXT
  1301.  
  1302.           FOR counter=start TO end [STEP increment]
  1303.  
  1304.             Defines a program loop.
  1305.  
  1306.  
  1307.  
  1308.           FREEMEM
  1309.  
  1310.             This function returns the amount of global memory
  1311.             available to other programs.
  1312.  
  1313.  
  1314.           GET (x1,y1)-(x2,y2),arrayname
  1315.                                       19
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.             This statement gets a range of pixels from the graphics
  1329.             screen and puts them into an array.  The may be placed
  1330.             back on the screen using the PUT statement.  In
  1331.             BasicBasic only one set of pixels may be stored in each
  1332.             array and storing begins with the first element of the
  1333.             array.
  1334.  
  1335.                       e.g.
  1336.                          DIM A%(100)
  1337.  
  1338.                          GET (100,100)-(109,109),A%
  1339.  
  1340.             It is important that you dimension the array large
  1341.             enough to hold the pixel data.
  1342.  
  1343.             You can calculate the space required as follows:
  1344.  
  1345.                size=int(((totalpixels*bits/pixel)+1)/8)+100
  1346.  
  1347.             Where size is in bytes.  Each element of an integer
  1348.             array takes up 2 bytes.
  1349.  
  1350.  
  1351.  
  1352.           GET #filenumber,recordnumber,variable$
  1353.  
  1354.             This statement allows input of data from RANDOM or
  1355.             BINARY files.
  1356.  
  1357.             For random files the record format and input/output
  1358.             buffer must previously have been assigned with a FIELD
  1359.             statement.  The following example would read in the
  1360.             first record of an existing random file which is defined
  1361.             to have a record length of 512 bytes, of which the first
  1362.             32 bytes are the first name and the second 32 bytes are
  1363.             the last name.  After the GET statement in the example
  1364.             is executed the data will be in the input buffer
  1365.             variables FIRST$ and LAST$.  After the file is closed
  1366.             the input buffer is cleared so data must be retrieved
  1367.             from the input buffer variables before closing the file.
  1368.  
  1369.                  OPEN "test.dat" FOR RANDOM AS #1 LEN = 512
  1370.                  FIELD #1,32 AS FIRST$,32 AS LAST$
  1371.                  TOPREC = 1
  1372.                  GET #1, TOPREC
  1373.                  IF EOF(1) THEN
  1374.                     PRINT "NO DATA IN FILE"
  1375.                  ELSE
  1376.                     SAVEFIRST$=FIRST$
  1377.                     SAVELAST$=LAST$
  1378.                  END IF
  1379.                  CLOSE #1
  1380.  
  1381.                                       20
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.             For binary files recordnumber is an absolute byte
  1396.             position in the file.  Data will be input to variable$.
  1397.             Variable$ must be set up before an INPUT to be the same
  1398.             size as the desired number of characters to read.  The
  1399.             first byte of the file is number 1.
  1400.  
  1401.                OPEN "test.dat" FOR BINARY AS #1
  1402.                FIRSTBYTE=1
  1403.                FIRST$=SPACE$(32)
  1404.                LAST$=SPACE$(32)
  1405.                GET #1, FIRSTBYTE,FIRST$
  1406.                FIRSTBYTE=FIRSTBYTE+32
  1407.                GET #1, FIRSTBYTE,LAST$
  1408.                CLOSE #1
  1409.  
  1410.  
  1411.  
  1412.           GOSUB label
  1413.  
  1414.             This statement causes a branch to a subroutine.
  1415.  
  1416.  
  1417.           GOTO label
  1418.  
  1419.             This statement causes a jump to another program
  1420.             location.
  1421.  
  1422.  
  1423.  
  1424.           IF...THEN...ELSE
  1425.  
  1426.             Permits conditional execution depending on evaluation of
  1427.             expression.
  1428.  
  1429.  
  1430.  
  1431.           INKEY$
  1432.  
  1433.             This function returns a character from the keyboard.
  1434.  
  1435.  
  1436.  
  1437.           INPUT[;]["promptstring"{;|,}] variablelist
  1438.  
  1439.             Executing this statement causes the program to pause and
  1440.             wait for input.  A promptstring may optionally be
  1441.             printed before pausing for input.  If a comma is used
  1442.             after the promptstring or if no prompt string is
  1443.             specified a question mark is displayed before waiting
  1444.             for input.  If INPUT is followed by a semicolon, then no
  1445.             carriage return line feed is performed after the Enter
  1446.             key is pressed.
  1447.                                       21
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.           INPUT #filenumber,variablelist
  1463.  
  1464.             This statement reads items from an open file to the
  1465.             given variables.  When inputting data leading spaces
  1466.             will be ignored.
  1467.  
  1468.  
  1469.  
  1470.           INPUT$(n,port)
  1471.  
  1472.             This function returns a string of n characters from a
  1473.             communications port.  If n characters are not available
  1474.             the function will WAIT for that many characters to
  1475.             arrive.  To avoid 'hanging up' your program use the LOC
  1476.             function to find how many characters are waiting.  If a
  1477.             communications error occurs the number of characters
  1478.             returned may be less than what you requested.  In this
  1479.             case use the function COMSTATI to determine what error
  1480.             occured.  See the section "Communications Programming"
  1481.             for more details.
  1482.  
  1483.  
  1484.  
  1485.           INSTR([start],expressiontosearch,searchforexpression)
  1486.  
  1487.             This function searches for the first occurence of
  1488.             searchforexpression in expressiontosearch and returns
  1489.             the position at which the match is found.  If no match
  1490.             is found then 0 is returned.
  1491.  
  1492.  
  1493.  
  1494.           INT(numericexpression)
  1495.  
  1496.             This function returns the largest integer less than or
  1497.             equal to numericexpression.
  1498.  
  1499.  
  1500.  
  1501.           KILL stringexpression
  1502.  
  1503.             This command deletes the file whose name is in
  1504.             stringexpression.
  1505.  
  1506.  
  1507.  
  1508.           LEFT$(stringexpression,n)
  1509.  
  1510.             This function returns a string of length n from the left
  1511.             part of stringexpression
  1512.  
  1513.                                       22
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.           LEN(stringexpression)
  1528.  
  1529.             This function returns the number of characters in
  1530.             stringexpression.
  1531.  
  1532.  
  1533.  
  1534.           LET
  1535.  
  1536.             May optionally be used before assignment statements.
  1537.             e.g. LET I=3
  1538.  
  1539.  
  1540.  
  1541.           LINE [STEP](x1,y1)-[STEP](x2,y2),[color],[B],[BF]
  1542.  
  1543.             This command draws a line, box, or filled box on the
  1544.             graphics screen.  The (x1,y1), (x2,y2) arguments are the
  1545.             end points of the line.  If a color is not specified the
  1546.             current foreground color will be used.  The 'B' option
  1547.             draws a box.  BF draws the box and paints the interior.
  1548.  
  1549.  
  1550.  
  1551.           LINE INPUT #,filenumber,stringvariable
  1552.  
  1553.             This statement inputs an entire line from a file.  Input
  1554.             continues until the next carriage return.
  1555.  
  1556.  
  1557.  
  1558.           LOADBITMAP filename,0,dx,dy,sx,sy,xsize,ysize,cv,xm,ym
  1559.  
  1560.             This statement loads and displays a bitmap.  The bitmap
  1561.             is displayed with the upper left screen coordinates at
  1562.             dx,dy.  sx,sy are the upper left bitmap coordinates.
  1563.             Xsize, ysize are the length in pixels of each dimension.
  1564.             If cv is set to 0 then all colors in the bitmap are
  1565.             converted to the closest defined color for the display.
  1566.             If set to 1 no conversion takes place.  Xm is an
  1567.             optional scaling factor in the x direction.  A positive
  1568.             number is used as a multiplier for the number of x bits;
  1569.             a negative number is used as a divider.  Xy is an
  1570.             optional scaling factor in the y direction.  A positive
  1571.             number is used as a multiplier and a negative number is
  1572.             used as a divider.
  1573.  
  1574.             See the section BITMAPS for further information.
  1575.  
  1576.  
  1577.  
  1578.           LOC(filenumber)
  1579.                                       23
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591.  
  1592.             This function returns the current absolute byte position
  1593.             within a file.  For a communications port it returns the
  1594.             number of received characters waiting in the receive
  1595.             buffer.
  1596.  
  1597.  
  1598.  
  1599.           LOCATE row,column,[cursor]
  1600.  
  1601.             Positions the cursor on the screen.  If cursor is set to
  1602.             0 then the cursor is turned off.  In graphics mode 1000
  1603.             row, column are pixel positions (starting with 0) rather
  1604.             than character positions (starting with 1).
  1605.  
  1606.  
  1607.  
  1608.           LPRINT expressionlist [,|;]
  1609.  
  1610.             Prints the items in expression list.  See PRINT for a
  1611.             more complete description.
  1612.  
  1613.  
  1614.  
  1615.           LPRINT USING formatstring; expressionlist[,|;]
  1616.  
  1617.             The formatstring tells how to print the items in
  1618.             expressionlist.  See PRINT USING for a description of
  1619.             format string items.
  1620.  
  1621.  
  1622.  
  1623.           LSET stringvariable=string expression
  1624.  
  1625.             This command puts data into a random access file buffer.
  1626.             The buffer must be previously defined by a FIELD
  1627.             statement.  The data is left justified in the field.
  1628.  
  1629.               e.g.  OPEN "TEST.DAT" FOR RANDOM AS #1
  1630.                     FIELD #1,18 AS NAME$,18 AS ADDRESS$
  1631.                     LSET NAME$="FRED SMITH"
  1632.                     LSET ADDRESS$="1 MAIN STRING"
  1633.                     PUT #1,4
  1634.                     CLOSE #1
  1635.  
  1636.  
  1637.  
  1638.           MAINMENU string1,string2...,string6,[bc,fc,gc,mc]
  1639.  
  1640.             This command defines the main menu bar.  Up to six menu
  1641.             names may be specified.  If less than six are defined,
  1642.             blank strings must be present.  See the section
  1643.             'Programming menus' for more detail.
  1644.  
  1645.                                       24
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.             Under DOS, the optional numeric values bc,fc,gc,mc
  1658.             represent background color, foreground color, graycolor,
  1659.             and the character code of the key which calls the menu
  1660.             bar respectively.  Under DOS if you use menus there are
  1661.             only 24 text lines remaining for use(lines 1-24).
  1662.  
  1663.               e.g. MAINMENU "File","Color","Options","","",""
  1664.  
  1665.                    MAINMENU "File","Color","","","","",7,1,4,1067
  1666.                      Defines a menu bar which under DOS would have a
  1667.                      background color of 7 and foreground color of 1
  1668.                      and which could be summoned by pressing F9.
  1669.  
  1670.  
  1671.  
  1672.           MENUITEMGRAY keycode
  1673.  
  1674.             DOS.  This command 'grays' a submenu item.  While gray
  1675.             the item cannot be selected by the user.  See the
  1676.             section 'Programming menus' for more detail.
  1677.  
  1678.  
  1679.  
  1680.           MENUITEMON keycode
  1681.  
  1682.             This command enables a submenu item.  When enable a user
  1683.             may select this menu item.
  1684.  
  1685.  
  1686.  
  1687.           MID$(stringexpression,n,length)
  1688.  
  1689.             This function returns a string composed of length
  1690.             characters starting with character n in
  1691.             stringexpression.
  1692.  
  1693.  
  1694.  
  1695.           MKDIR stringexpression
  1696.  
  1697.             This command creates a directory specified by
  1698.             stringexpression
  1699.  
  1700.  
  1701.  
  1702.           MOUSEB
  1703.  
  1704.             This function returns information on whether mouse
  1705.             buttons are pressed.  Bit 0 is 1 if left button is
  1706.             pressed.  Bit 1 is 1 if right button is pressed.  Bit 2
  1707.             is 1 if middle button is pressed.
  1708.  
  1709.               e.g.  b=mouseb
  1710.                     b=b and 2
  1711.                                       25
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723.                     if b<>0 then
  1724.                       print "right button is pressed."
  1725.                     end if
  1726.  
  1727.  
  1728.  
  1729.           MOUSEON
  1730.  
  1731.             This function intializes the mouse.  It returns a -1
  1732.             (true) if a mouse is present.  It returns 0 if no mouse
  1733.             is present.  This function must be issued before the
  1734.             mouse can be used in both DOS and Windows.
  1735.  
  1736.               e.g.  mouseflag=mouseon
  1737.  
  1738.  
  1739.  
  1740.           MOUSEX
  1741.  
  1742.             This function returns the x position of the mouse in
  1743.             character units (1 through 80) for screen mode 0 and in
  1744.             pixel units (0 through top) in all other screen modes.
  1745.  
  1746.               e.g. x=mousex
  1747.  
  1748.  
  1749.  
  1750.           MOUSEY
  1751.  
  1752.             This function returns the y position of the mouse in
  1753.             character units (1 through 25) for screen mode 0 and in
  1754.             pixel units (0 through top) in all other screen modes..
  1755.  
  1756.               e.g.  y=mousey
  1757.  
  1758.  
  1759.  
  1760.           ON PAINT line number
  1761.  
  1762.             This statement defines a subroutine which handles screen
  1763.             updates.  This statement is ignored in DOS.  This
  1764.             statement is optional in Windows.  See the section on
  1765.             Windows and Graphics for more detail.
  1766.  
  1767.  
  1768.  
  1769.           OPEN filename FOR mode [ACCESS access] AS # [LEN=reclen]
  1770.  
  1771.             This command prepares the file filename for access as
  1772.             number #.  The filename can be a file name with or
  1773.             without a pathname.  Modes supported are INPUT, OUTPUT,
  1774.             APPEND, BINARY, RANDOM.  INPUT, OUTPUT, APPEND are for
  1775.             sequential files.  RANDOM is for random-access files
  1776.             with fixed length records.  BINARY can be used to access
  1777.                                       26
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.             any byte of any file.
  1790.  
  1791.             Access types supported are READ, WRITE, or READ WRITE.
  1792.             This argument is optional and is only valid for BINARY
  1793.             and RANDOM files.  READ WRITE is the default.  If you
  1794.             specify READ you will get an error if you try to access
  1795.             a file marked as read-only by DOS.
  1796.  
  1797.             LEN is used for random access files.  It is the record
  1798.             length.  This argument is optional.  128 is the default.
  1799.  
  1800.             e.g.  OPEN "TEST.DAT" FOR INPUT AS #1
  1801.  
  1802.             e.g.  OPEN "TEST.DAT" FOR RANDOM ACCESS READ AS #1
  1803.  
  1804.             e.g.  OPEN "TEST.DAT" FOR RANDOM ACCESS READ WRITE AS #1
  1805.  
  1806.             e.g.  OPEN "T.DAT" FOR RANDOM AS #1 LEN=128
  1807.  
  1808.  
  1809.  
  1810.           OPEN "COMn: speed,parity,data,stop" FOR RANDOM AS #n LEN=n
  1811.  
  1812.             This statement opens and initializes a communications
  1813.             port.  COM1 and COM2 are supported.  Supported speeds
  1814.             are 9600, 4800,2400,1200,and 300.  Parity may be either
  1815.             E,O,N, or M.  Data may be either 5,6,7, or 8.  Stop may
  1816.             be either 1, 1.5, or 2.  LEN is used to specify the size
  1817.             of the input buffer.  The default is 128 bytes.  For
  1818.             Windows programs a minimum of 2048 is suggested.
  1819.  
  1820.             Only PRINT # will output characters to an open
  1821.             communications port.  Only INPUT$ will receive
  1822.             characters from a port.
  1823.  
  1824.             Communications parameters may be omitted; however, their
  1825.             position must be marked by commas.  Default parameters
  1826.             are 300 baud, No parity, 8 data bits, and 1 stop bit.
  1827.  
  1828.               e.g. OPEN "COM1: 2400,E,7,1" for random as #1 len=2048
  1829.  
  1830.             See the section "Communications Programming" for more
  1831.             details.
  1832.  
  1833.  
  1834.  
  1835.           OPENFILEREAD filterstr,namestr,directorystr,titlestr
  1836.  
  1837.             This statement executes a special Dialog which allows
  1838.             the user to input a file name for input.  See the
  1839.             section "Programming Dialog Boxes" for details.
  1840.             
  1841.  
  1842.  
  1843.                                       27
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.           OPENFILESAVE filterstr,namestr,directorystr,titlestr
  1856.  
  1857.             This statement executes a special Dialog which allows
  1858.             the user to input a file name for writing.  See the
  1859.             section "Programming Dialog Boxes" for details.
  1860.             
  1861.  
  1862.  
  1863.  
  1864.  
  1865.           OSTYPE
  1866.  
  1867.             This function returns a number indicating what operating
  1868.             system the program is running under.
  1869.  
  1870.                    1 - DOS
  1871.                    2 - Windows 3.x
  1872.                    3 - ?
  1873.  
  1874.  
  1875.  
  1876.           PAINT [STEP](x,y),[paint],[border]
  1877.  
  1878.             This statement fills a graphics area with the color
  1879.             selected.  (x,y) is the first point filled.  It will be
  1880.             filled with the color specified by the attribute
  1881.             'paint', if supplied.  If not supplied the foreground
  1882.             color is used.  Coloring in all directions continues
  1883.             until the 'border' color is encountered.  If border
  1884.             color is not supplied the paint color is used.
  1885.  
  1886.  
  1887.  
  1888.           PALETTE attribute,color
  1889.  
  1890.             This statement allows you to change the default graphic
  1891.             colors provided by BasicBasic.  The usage of the
  1892.             attribute and color arguments depends on the screen mode
  1893.             you are in.  You can always find out your current screen
  1894.             mode using the SYSTEM function.  For Windows programs
  1895.             see the section on WINDOWS AND GRAPHICS for additional
  1896.             information on the PALETTE statement.  Here are the
  1897.             definition of the arguments for various screen modes:
  1898.             screen color.
  1899.  
  1900.             MODE 8
  1901.  
  1902.               Attribute determines which one of the 16 color
  1903.               attributes you want to redefine.  It is the attribute
  1904.               you select with the COLOR statement.  In this mode you
  1905.               have 16 colors to choose from (0 to 15).  See the
  1906.               COLOR statement for a listing of the colors.
  1907.  
  1908.             MODE 9
  1909.                                       28
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.               Attribute determines which one of the 16 color
  1923.               attributes you want to redefine.  In this mode you
  1924.               have 64 colors to choose from (0 to 63).
  1925.  
  1926.             MODE 12
  1927.  
  1928.               In this mode attribute determines which one of the 16
  1929.               color attributes you want to redefine.  In this mode
  1930.               the color value reflects an exact RGB definition of
  1931.               the color you want.  If you use a variable for color
  1932.               it must be of type long integer.
  1933.  
  1934.                 color= 65536 * blue + 256 * green + red
  1935.  
  1936.               Where blue, green, red can be from 0 to 255.
  1937.  
  1938.  
  1939.  
  1940.           POINT (x,y)
  1941.  
  1942.             This function returns the color of the specified
  1943.             graphics pixel.
  1944.  
  1945.  
  1946.  
  1947.           POS(0)
  1948.  
  1949.             This function returns the current column position of the
  1950.             cursor(starting with 1).  In graphics mode 1000 this
  1951.             function returns the pixel column (starting with 0).
  1952.  
  1953.  
  1954.  
  1955.           POSITION x1,y2,xlen,ylen
  1956.  
  1957.             This statement sizes and positions a window.  x1,y1 are
  1958.             the upper left of the window.  This statement is ignored
  1959.             in DOS.
  1960.  
  1961.  
  1962.  
  1963.           PRESET [STEP](x,y),[color]
  1964.  
  1965.             This command sets one pixel on the screen to the
  1966.             specified color.  By using the STEP prefix you can
  1967.             specify that the x,y coordinates are relative to the
  1968.             current position.  If no color is supplied the pixel is
  1969.             set to the background color.
  1970.  
  1971.  
  1972.  
  1973.           PRINT expressionlist [,|;]
  1974.  
  1975.                                       29
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.             Prints the items in expression list.  PRINT with no
  1988.             expression results in a blank line being printed.  If
  1989.             the expression is followed by a semi-colon (;) the next
  1990.             print starts immediately following this one.  If the
  1991.             expression ends in a comma (,) the next print starts at
  1992.             the next print position.  Print positions are at columns
  1993.             1, 15, 29, etc.
  1994.  
  1995.  
  1996.  
  1997.           PRINT USING formatstring; expressionlist[,|;]
  1998.  
  1999.             The formatstring tells how to print the items in
  2000.             expressionlist.  Any text may be in formatstring.
  2001.             BasicBasic only recognizes three format characters.
  2002.             These are pound sign (#)  comma (,) and period (.).
  2003.             Each time a number character is found (#) one item from
  2004.             the expression list will be printed.
  2005.  
  2006.                e.g. PRINT USING "The answer is: ###,###.##";number
  2007.  
  2008.  
  2009.  
  2010.           PRINT #filenumber,expressonlist
  2011.  
  2012.             Prints to a file or communications port the items in
  2013.             expression list.
  2014.  
  2015.  
  2016.  
  2017.           PSET [STEP](x,y),[color]
  2018.  
  2019.             This command sets one pixel on the screen to the
  2020.             specified color.  By using the STEP prefix you can
  2021.             specify that the x,y coordinates are relative to the
  2022.             current position.  If no color is supplied the pixel is
  2023.             set to the foreground color.
  2024.  
  2025.  
  2026.  
  2027.           PUT (x,y),arrayname,action
  2028.  
  2029.             This statement places pixels stored in an array onto the
  2030.             screen.  (x,y) is the upper left position.  The x and y
  2031.             length placed on the screen depends on the GET statement
  2032.             which stored the data into the array.
  2033.  
  2034.             The action may be one of the following:
  2035.  
  2036.                   XOR  - Combines the pixels in the array and those
  2037.                          on the screen using the XOR operator.
  2038.                          This is the most common action used for
  2039.                          motion since this automatically restores
  2040.                          the background when done twice.  XOR is
  2041.                                       30
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.                          the default.
  2054.  
  2055.                  PSET  - Transfers data erasing what is already on
  2056.                          the screen.
  2057.  
  2058.                PRESET  - Inverts data and transfers to screen
  2059.                          erasing what is already on the screen.
  2060.  
  2061.                   AND  - Masks screen image with data in array.
  2062.  
  2063.                    OR  - Superimposes data on existing screen.
  2064.  
  2065.             For Windows use see the section WINDOWS AND GRAPHICS for
  2066.             more information.
  2067.  
  2068.  
  2069.           PUT #filenumber,recordnumber,stringexpression
  2070.           PUT #filenumber,recordnumber
  2071.  
  2072.             This statement is used to output data to a file opened
  2073.             in either BINARY or RANDOM mode.
  2074.  
  2075.             In BINARY mode the string expression will be written to
  2076.             the file at the byte location given by recordnumber.
  2077.             Recordnumber is the absolute byte number to be written,
  2078.             where the first byte of the file is 1.
  2079.  
  2080.               e.g. A$=SPACE$(20)
  2081.                    PUT #1,100,A$  (writes 20 bytes starting at 100)
  2082.  
  2083.  
  2084.             In RANDOM mode the data in the output buffer will be
  2085.             written to the record number indicated.
  2086.  
  2087.               e.g. PUT #1,1    (writes to record 1)
  2088.  
  2089.  
  2090.  
  2091.           RADIOON keycode
  2092.  
  2093.             This command 'checks' the indicated Radio button.  See
  2094.             the section "Programming Buttons" for more information.
  2095.  
  2096.  
  2097.  
  2098.           RADIOOFF keycode
  2099.  
  2100.             This command 'unchecks' the indicated Radio button.  See
  2101.             the section "Programming Buttons" for more information.
  2102.  
  2103.  
  2104.  
  2105.           RANDOMIZE
  2106.  
  2107.                                       31
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.             This statement initializes the random number generator.
  2120.             If you use the RND function you probably want to preceed
  2121.             it's use with the RANDOMIZE statement.  Otherwise
  2122.             everytime your program runs you will get the same
  2123.             sequence of 'random' numbers.  This statement has no
  2124.             arguments.
  2125.  
  2126.  
  2127.  
  2128.           READ variablelist
  2129.  
  2130.             Inputs a value from a DATA statement.
  2131.  
  2132.  
  2133.  
  2134.           REM
  2135.  
  2136.             Denotes a comment line and is ignored by the compiler.
  2137.  
  2138.  
  2139.  
  2140.           RESTORE label
  2141.  
  2142.             Sets position that next READ statement will input data
  2143.             from.
  2144.  
  2145.  
  2146.  
  2147.           RETURN
  2148.  
  2149.             Returns program execution to location immediately after
  2150.             last GOSUB.
  2151.  
  2152.  
  2153.  
  2154.           RIGHT$(stringexpression,n)
  2155.  
  2156.             This function returns a string of length n from the
  2157.             right part of stringexpression
  2158.  
  2159.  
  2160.  
  2161.           RMDIR stringexpression
  2162.  
  2163.             This command removes the directory given by
  2164.             stringexpression.
  2165.  
  2166.  
  2167.  
  2168.           RND
  2169.  
  2170.             This function returns one in a sequence of random
  2171.             numbers between 0 and 1.
  2172.  
  2173.                                       32
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.           SCREEN mode[,palette][,peflag]
  2187.  
  2188.             This statement selects the screen mode.  The actual
  2189.             screen mode available depends on your hardware.  The
  2190.             modes available in this version of BasicBasic are:
  2191.  
  2192.              0 - Text Only.  This is the default.
  2193.  
  2194.              2 - 640-200 Graphics.  Black and white only.
  2195.                  80 x 25 text format. (CGA, EGA, VGA)
  2196.  
  2197.              8 - 640-200 Graphics.  16 colors and 16 attributes
  2198.                  80 x 25 text format (EGA,VGA)
  2199.  
  2200.              9 - 640-350 Graphics.  16 colors and 16 attributes
  2201.                  80 x 25 text format (EGA,VGA)
  2202.  
  2203.             12 - 640-480 Graphics.  256,000 colors and 16 attributes
  2204.                  80 x 30 text format (VGA)
  2205.  
  2206.             1000 - Special mode.  Supports whatever graphics
  2207.                  resolution Windows supports or, under DOS, the
  2208.                  highest resolution the monitor supports.  Under
  2209.                  Windows supports font generation  Issueing a SCREEN
  2210.                  1000 under DOS results in selection of the highest
  2211.                  available graphics mode (2, 8, 9 or 12).
  2212.  
  2213.             The Palette argument is ignored under DOS. Under Windows
  2214.             it allows you to select the special BasicBasic palette
  2215.             if set to 16, or to select the 'system palette' if set
  2216.             to 0.  If the Palette argument is omitted then the
  2217.             default is 0, use the system palette.  If hardware
  2218.             supports you can also set up to 256 for 256 color
  2219.             selection.  See the section WINDOWS AND GRAPHICS for
  2220.             more detail.
  2221.  
  2222.             The peflag argument is ignored under DOS.  Under Windows
  2223.             this flag can be set to 1 to prevent other programs from
  2224.             using palette entries supplied by your logical palette
  2225.             or 4 to specify that you do not want to use any palette
  2226.             entries supplied by other programs.  The default value
  2227.             is 0 and there is seldom a reason to change this.
  2228.  
  2229.             Here are examples of how the SCREEN command might be
  2230.             used under Windows.
  2231.  
  2232.                 SCREEN 8         -- system palette
  2233.                 SCREEN 8,0       -- system palette
  2234.                 SCREEN 8,16      -- special BasicBasic palette
  2235.                 SCREEN 1000,256  -- special BasicBasic palette
  2236.  
  2237.             Under Windows if you select 256 color mode on a machine
  2238.             with a palette size of 256, then Windows only allows you
  2239.                                       33
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.             to change 236 of the palette entries.  Entries 0->9 and
  2252.             246->255 are fixed and may not be changed.  The fixed
  2253.             windows colors are different from the standard, default
  2254.             Basic Colors
  2255.  
  2256.             If you do not know the output capabilites of the machine
  2257.             your program is going to run on, use the SETERRLEVEL
  2258.             command to determine if a screen mode has been
  2259.             successful.  Here is an example:
  2260.  
  2261.                     SETERRLEVEL 5
  2262.                     ERR=0
  2263.                     SCREEN 12
  2264.                     IF ERR>0 THEN
  2265.                       ERR=0
  2266.                       SCREEN 9
  2267.                       IF ERR>0 THEN
  2268.                         ERR=0
  2269.                         SCREEN 8
  2270.                         IF ERR>0 THEN
  2271.                           PRINT "GRAPHICS NOT AVAILABLE."
  2272.                           STOP
  2273.                         END IF
  2274.                       END IF
  2275.                     END IF
  2276.  
  2277.             The SCREEN command resets SCROLLAREA to entire screen.
  2278.  
  2279.  
  2280.  
  2281.  
  2282.           SCROLLAREA leftx,topy,rightx,bottomy
  2283.  
  2284.             This statement defines an area of the screen which is
  2285.             used for scrolling.  This allows you to create fixed
  2286.             text or buttons in one area of the screen while
  2287.             scrolling another area.  In screen modes less than 1000
  2288.             Leftx, topy, rightx, bottomy are in character units and
  2289.             are inclusive(starting with 1).  In screen mode 1000
  2290.             leftx, topy, rightx, bottomy are pixel units(starting
  2291.             with 0).
  2292.  
  2293.             Executing the CLS command will clear the entire screen,
  2294.             not just the scrollable area.  PRINT CHR$(12); will only
  2295.             clear the scrollable area.
  2296.  
  2297.  
  2298.  
  2299.           SELECTBITMAP bitmapnumber
  2300.  
  2301.             This command is ignored under DOS.  Under Windows this
  2302.             command assigns screen output to a memory bitmap or back
  2303.             to the screen again.  A bitmapnumber=0 signifies the
  2304.             screen; 1 or 2 signify one of the two possible memory
  2305.                                       34
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.             bitmaps previously created with the CREATEBITMAP
  2318.             command.  DO NOT perform input operations, define
  2319.             buttons, or call Dialogs while a memory bitmap is
  2320.             selected!
  2321.  
  2322.             The following example draws and fills rectangles on a
  2323.             memory bitmap and then copies it to the screen.
  2324.  
  2325.                  pxsize=100
  2326.                  pysize=100
  2327.                  createbitmap 1,0,pxsize,pysize
  2328.                  selectbitmap 1
  2329.                  c=1
  2330.                  for i=0 to 90 step 10
  2331.                    line (i,0)-(i+10,100),c,bf
  2332.                    c=c+1
  2333.                  next i
  2334.                  selectbitmap 0
  2335.                  copybits 0,0,0,100,100,1,0,0,0
  2336.  
  2337.  
  2338.  
  2339.           SETCOM comnum,"Speed,Parity,Databits,Stopbits,dtr,rts"
  2340.  
  2341.             This statement allows you to change communications
  2342.             parameters for an already opened communications port.
  2343.             Speed, Parity, Databits, and Stopbits are described in
  2344.             OPEN COM.  DTR may be either ON or OFF.  If ON then the
  2345.             output data terminal ready signal will be set high.  ON
  2346.             is the default.  RTS may be either 1 or 0.  If 1 then
  2347.             the output request to send is high.  1 is the default.
  2348.             Communications parameters not present will not be
  2349.             changed; however, a comma must mark their positions.
  2350.  
  2351.                e.g. SETCOM 1,",,7"
  2352.  
  2353.                      Sets number of data bits to 7.
  2354.  
  2355.                e.g. SETCOM 1,",,,,OFF"
  2356.  
  2357.                     Turns Data terminal read;y off.
  2358.  
  2359.             See the section "Communications Programming" for more
  2360.             information.
  2361.  
  2362.  
  2363.  
  2364.           SETERRLEVEL level
  2365.  
  2366.             This command defines what BasicBasic should do in case
  2367.             of runtime errors.  Level must be a number (not an
  2368.             expression or variable).  Level 7 causes execution to
  2369.             halted for all errors.  Level 5 causes execution to
  2370.             continue for recoverable errors.  In the latter case the
  2371.                                       35
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.             global variable ERR is set to the error number.  ERR may
  2384.             be reset with the statement:  ERR=0.  ERR will be reset
  2385.             each time an error occurs so the program must check ERR
  2386.             immediately after statements which may produce errors.
  2387.  
  2388.  
  2389.  
  2390.           SHELL [string]
  2391.  
  2392.             This command runs another program.  String may contain
  2393.             an optional command string to pass to the called
  2394.             program.
  2395.  
  2396.               e.g.   SHELL WRITE  MYFILE.WRI
  2397.  
  2398.               Would call the application WRITE and pass it the
  2399.               command string MYFILE.WRI.
  2400.  
  2401.  
  2402.  
  2403.           SIN(x)
  2404.  
  2405.             This function returns the sine of an angle expressed in
  2406.             radians.
  2407.  
  2408.  
  2409.  
  2410.           SOUND frequency,duration
  2411.  
  2412.             This command issues tones through the computer speaker.
  2413.             The frequency is the desired frequency in cycles per
  2414.             second(cps).  The duration is the multiple of the clock
  2415.             frequency (i.e. 18.2).
  2416.  
  2417.  
  2418.  
  2419.           SPACE$(N)
  2420.  
  2421.             Returns a string of n spaces.
  2422.  
  2423.  
  2424.  
  2425.           STOP
  2426.  
  2427.             Causes the program to cease execution.
  2428.  
  2429.  
  2430.  
  2431.           STOREBITMAP 0,filename,x,y,xsize,ysize,cv,0
  2432.  
  2433.             This statement stores the designated portion of the
  2434.             display to a bitmap file with the designated name.  X,y
  2435.             are the upper left screen coordinates.  If cv is set to
  2436.             1 then the file will be stored in run-length-encoded
  2437.                                       36
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.             compressed format if possible.
  2450.  
  2451.             See the section BITMAPS for further information.
  2452.  
  2453.  
  2454.  
  2455.           STR$(numericexpression)
  2456.  
  2457.            This function returns a string representation of the
  2458.            numbericexpression.
  2459.  
  2460.  
  2461.  
  2462.           STRING$(m,stringexpression)
  2463.  
  2464.             This function returns a string of length n.  This string
  2465.             is composed of the first character in stringexpression.
  2466.  
  2467.  
  2468.  
  2469.           SYSTEM (n)
  2470.  
  2471.             This function returns information on the screen
  2472.             depending on the value of n passed to it.  This
  2473.             information is of most use to Windows programs.
  2474.  
  2475.                 n       function returns
  2476.                ---    ----------------------------------
  2477.                 1     Maximum x allowed in a graphics program
  2478.                 2     Maximum y allowed in a graphics program
  2479.                 3     Actual maximum screen size x
  2480.                 4     Actual maximum screen size y
  2481.                 5     Maximum color attribute
  2482.                 6     Maximum 'background color' in COLOR statement
  2483.                 7     Current screen mode
  2484.                 8     Window left position
  2485.                 9     Window top position
  2486.                 10    Window x size
  2487.                 11    Window y size
  2488.                 12    Returns 1 if window is Active Window, 0
  2489.                       otherwise.  See WINDOWS AND GRAPHICS for
  2490.                       more information on uses of this value.
  2491.                 13    DOS major version number (e.g. 5)
  2492.                 14    DOS minor version number (e.g. 0)
  2493.                 15    Windows major version number (e.g. 3)
  2494.                 16    Windows minor version number (e.g. 1)
  2495.                 17    Hardware Palette Size
  2496.  
  2497.  
  2498.           TAB(numericexpression)
  2499.  
  2500.             In PRINT or LPRINT statements positions output at column
  2501.             position given in numericexpression.
  2502.  
  2503.                                       37
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.           TAN(x)
  2518.  
  2519.             This function returns the tangent of an angle expressed
  2520.             in radians.
  2521.  
  2522.  
  2523.  
  2524.           TIME$
  2525.  
  2526.             This function returns a string representation of the
  2527.             current system time.
  2528.  
  2529.  
  2530.  
  2531.           TIMER
  2532.  
  2533.             This function returns the number of seconds since
  2534.             midnight.
  2535.  
  2536.  
  2537.  
  2538.           UCASE$(stringexpression)
  2539.  
  2540.             This function converts all lower case characters in
  2541.             stringexpression to upper case and returns as new
  2542.             string.
  2543.  
  2544.  
  2545.  
  2546.           VAL(stringexpression)
  2547.  
  2548.             This function returns the numeric value of string
  2549.             stringexpression.
  2550.  
  2551.  
  2552.  
  2553.           WRITE #filenumber,expression list
  2554.  
  2555.             Write is performs the same way as Print with these
  2556.             exceptions:  1) Commas are inserted between all items;
  2557.             2) Strings are bracketed by quotation marks.
  2558.  
  2559.             BasicBasic does not support using the Write statement to
  2560.             display on the screen.
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.                                       38
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.           GRAPHICS PROGRAMMING FOR BEGINNERS
  2582.           -------------------------------------------------------
  2583.           
  2584.           This section will show you the basics of graphics
  2585.           programming in BasicBasic.  The examples given will work
  2586.           equally well running under DOS or Windows.
  2587.  
  2588.           Now here is your first graphics program:
  2589.  
  2590.                   SCREEN 2
  2591.                   LINE (0,0)-(400,100)
  2592.                   INPUT Z
  2593.  
  2594.           This program draws one diagonal line on the screen.  The
  2595.           key to graphics programming is the SCREEN command.  You
  2596.           must issue a SCREEN command to tell BasicBasic that you
  2597.           are going to do graphics.  Screen 2 puts your screen into
  2598.           a graphics mode with 640 dots (pixels) across and 200 dots
  2599.           down.  Each dot is either white or black.  Most of our
  2600.           examples will use SCREEN 8, which has the same number of
  2601.           dots, but 16 colors.  If you are running on a CGA display,
  2602.           SCREEN 2 is the only graphics mode available, so you will
  2603.           have to adjust these examples.
  2604.  
  2605.           The second line in our example contains the LINE
  2606.           statement.  The LINE statement will do much more than make
  2607.           lines.  It will also create boxes and fill them with a
  2608.           color if you want.  Here is another program:
  2609.  
  2610.                   SCREEN 8
  2611.                   LINE (0,0)-(400,100),4,B
  2612.                   INPUT Z
  2613.  
  2614.           This program puts the hardware into a 16 color mode and
  2615.           then creates a box with red lines.  The 'B' at the end of
  2616.           the statement is what tells it to make a box.  Notice that
  2617.           the diagonal line is not drawn on the screen.  Instead the
  2618.           end points in the statement are used as the opposing
  2619.           corners of the box.  The 4 specifies the color red.  You
  2620.           could also do the following:
  2621.  
  2622.                   SCREEN 8
  2623.                   LINE (0,0)-(400,100),4,BF
  2624.                   INPUT Z
  2625.  
  2626.           This program has 'BF' instead of 'B' in the LINE
  2627.           statement.  The 'BF' says to draw a box and then fill it
  2628.           with the same color.
  2629.  
  2630.           Of course you can also use a variable in place of the
  2631.           numeric constants we have used so far:
  2632.  
  2633.                   SCREEN 8
  2634.                   FOR I=0 TO 15
  2635.                                       39
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.                     X=I*10
  2648.                     Y=I*5
  2649.                     MYCOLOR=I
  2650.                     LINE (X,Y)-(X+10,Y+10),MYCOLOR,B
  2651.                   NEXT I
  2652.                   INPUT Z
  2653.  
  2654.           This creates a series of boxes.
  2655.  
  2656.           If you are tired of sharp corners try this:
  2657.  
  2658.                   SCREEN 8
  2659.                   CIRCLE (100,100),50,4
  2660.                   INPUT Z
  2661.  
  2662.           As you might expect this draws a circle.  The center of
  2663.           the circle is at 100,100; it has a radius of 50 and is
  2664.           drawn in red(the 4).  The CIRCLE statement will do much
  2665.           more than draw circles; it will also draw arcs and pie
  2666.           sections.  Try this:
  2667.  
  2668.                   SCREEN 8
  2669.                   CIRCLE (100,100),50,4,0,3.1416/2
  2670.                   INPUT Z
  2671.  
  2672.           This draws a quarter circle (an arc) starting to the right
  2673.           and finishing up at the top.  To do this we are added 2
  2674.           more arguments to the CIRCLE statement; 0 and 3.1416/2.
  2675.           These are the start and end angles in radians of the arc.
  2676.           There are 2pi radians in a circle.  Don't remember this
  2677.           from high school?  Just remember that 0 is to the right;
  2678.           3.1416/2 is up, 3.1416 is left, and 4.7124 is down.
  2679.  
  2680.           Putting a minus sign before the start and end angles cause
  2681.           BasicBasic to draw a pie section.
  2682.  
  2683.                   SCREEN 8
  2684.                   CIRCLE (100,100),50,4,-.01,-2
  2685.                   INPUT Z
  2686.  
  2687.           This draws a pie section slightly greater than a quarter
  2688.           circle.  The CIRCLE statement does not have a fill option
  2689.           like the LINE statement.  If you want to fill your pie
  2690.           section with a color you should use the PAINT statement.
  2691.           This is a very versatile statement.  You use it like this:
  2692.  
  2693.                   SCREEN 8
  2694.                   CIRCLE (100,100),50,4,-.01,-2
  2695.                   PAINT (102,98),4,4
  2696.                   INPUT Z
  2697.  
  2698.           Now we have a red pie section.  Paint starts filling the
  2699.           screen with color starting with the center point given and
  2700.           proceeding to the border color.  Notice that we made our
  2701.                                       40
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.           center point different than 100,100 to make sure it was
  2714.           inside the pie section we previously drew with the CIRCLE
  2715.           command.  We could have a blue pie section with red border
  2716.           with the following:
  2717.  
  2718.                   SCREEN 8
  2719.                   CIRCLE (100,100),50,4,-.01,-2
  2720.                   PAINT (102,98),1,4
  2721.  
  2722.           We will mention one last statement in this introductory
  2723.           discussion.  This is the PSET statement.  It allows you
  2724.           set individula pixels on the screen.
  2725.  
  2726.                   SCREEN 8
  2727.                   FOR I=1 TO 100
  2728.                     MYCOLOR=INT(RND*16)
  2729.                     X=INT(RND*640)
  2730.                     Y=INT(RND*200)
  2731.                     PSET (X,Y),MYCOLOR
  2732.                   NEXT I
  2733.                   INPUT Z
  2734.  
  2735.           The preceeding program 'splatters' 100 randomly placed
  2736.           pixels on the screen.  They also have random color.
  2737.  
  2738.           We won't discuss them here but other statements useful in
  2739.           graphics programming are:
  2740.  
  2741.                   PRESET
  2742.                   GET
  2743.                   PUT
  2744.                   COLOR
  2745.                   PALETTE
  2746.  
  2747.           Refer to the graphics programming examples SAMPLEG1.BAS,
  2748.           SAMPLEG2.BAS, SAMPLEG3.BAS and SAMPLEG4.BAS for more ideas
  2749.           on graphics programming.
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.                                       41
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.           PROGRAMMING BUTTONS
  2781.           -------------------------------------------------------
  2782.           
  2783.           Buttons can be used in either DOS or Windows.  Buttons do
  2784.           not require the presence of a mouse.  Here is an example
  2785.           of a valid create button command:
  2786.  
  2787.               CBUTTON "EXIT",1068,0,"Push",0,1,1,8,1,7,4
  2788.  
  2789.           Here is a description of each parameter:
  2790.  
  2791.             EXIT - This is the name displayed in the button
  2792.  
  2793.             1068 - This is keycode for F10 (User can either
  2794.                    use mouse to push button or press F10.
  2795.  
  2796.             0    - Reserved
  2797.  
  2798.             Push - Type of button.  'Radio' is the other type.
  2799.  
  2800.             0    - Reserved
  2801.  
  2802.             1    - Left position
  2803.  
  2804.             1    - Y position
  2805.  
  2806.             8    - x size (in characters)
  2807.  
  2808.             1    - y size (in characters)
  2809.  
  2810.             7    - foreground color (In Windows only used for Radio
  2811.                    buttons).
  2812.  
  2813.             4    - background color (In Windows only used for Radio
  2814.                    buttons).
  2815.  
  2816.           In DOS a push button will have text centered and if the
  2817.           defined text size is at least 2 characters smaller than
  2818.           the button size a line will be drawn around the outside.
  2819.  
  2820.           In graphics modes button position and size is given in
  2821.           pixel units rather than character units.
  2822.  
  2823.           Remember that if a mouse is going to be used it MUST be
  2824.           turned on with the MOUSEON function before it can be used
  2825.           to press a button.
  2826.  
  2827.           Here is an example of a small program which uses buttons:
  2828.  
  2829.                 A=MOUSEON
  2830.                 IF A=-1 THEN
  2831.                   CBUTTON "EXIT",1068,0,"PUSH",0,70,1,8,1,0,0
  2832.                 ELSE
  2833.                                       42
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.                   CBUTTON "F10-Exit",1068,0,"PUSH",0,70,1,10,1,0,0
  2846.                 END IF
  2847.                 INPUT Z
  2848.                 a$=INKEY$
  2849.                 PRINT LEN(A$)
  2850.  
  2851.             This program displays different text in the button
  2852.             depending on whether a mouse is present or not.
  2853.             Assuming there is a mouse this program will end under
  2854.             the following conditions:
  2855.  
  2856.                - User presses EXIT button with mouse
  2857.                - User presses F10 on keyboard
  2858.                - User presses ENTER key on keyboard.
  2859.  
  2860.             In the first two cases the print will show a length of 2
  2861.             for the length of A$ since the button keycode will be
  2862.             returned on the next INKEY$ after the INPUT is
  2863.             terminated.
  2864.  
  2865.           Once you have created a button you are responsible for NOT
  2866.           writing anything to that area of the screen.  If you do
  2867.           the button will be erased.  If you are using buttons and
  2868.           scrolling text on the screen make sure you use the
  2869.           SCROLLAREA command to protect the button area of the
  2870.           screen.
  2871.  
  2872.           INVISIBLE buttons can be particularly useful.  An
  2873.           invisible button does not appear on the screen, but a
  2874.           button push inside it's defined area will return it's
  2875.           keycode just as if it were.  This allows you to create
  2876.           your own special color buttons or input areas.  For
  2877.           instance you could have a series of INPUT statements in a
  2878.           program and each could be defined as an invisible button.
  2879.           When the user clicked on that input area you would get a
  2880.           unique keycode which would direct your program to the
  2881.           section of code which handles that input.
  2882.  
  2883.           Since buttons end INPUT commands you can also use
  2884.           invisible buttons to define any keys you want to end INPUT
  2885.           commands (e.g. UP ARROW or DOWN ARROW).
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.                                       43
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.           PROGRAMMING MENUS
  2913.           -------------------------------------------------------
  2914.           
  2915.           Under DOS menus may be either accessed by using the mouse
  2916.           (if present) or pressing the F10 key. (F10 is changeable,
  2917.           see the definition of MAINMENU command)  When using menus
  2918.           in DOS, always define menus BEFORE creating buttons.
  2919.           Also, be aware that using the PALETTE command when a menu
  2920.           bar is displayed may change the color of the menu bar or
  2921.           may it invisible.
  2922.  
  2923.           Menus support in BasicBasic is much like button support.
  2924.           When the user selects a menu item a defined keycode is
  2925.           returned to the Basic program.  Menu keycodes are returned
  2926.           only using the INKEY$ function call.  However, if the user
  2927.           selects a menu item while the program is waiting for input
  2928.           in an INPUT command the input command will be terminated
  2929.           just as if the user had pressed Enter.  Then on the next
  2930.           INKEY$ call the keycode for the menu item will be
  2931.           returned.
  2932.  
  2933.           KEYCODES:  Just as in buttons keycodes can be regular or
  2934.           extend keys.  Extended keys are indicated by adding 1000
  2935.           to the regular keycode.  F10 would be 1068.  See the
  2936.           Appendix 'Keyboard codes' for a complete list.
  2937.  
  2938.           The mouse must be enable with the MOUSEON command before
  2939.           any menu items will be recognized.
  2940.  
  2941.           Here is an example of a simple Windows program which
  2942.           utilizes menus.
  2943.  
  2944.                 y=mouseon
  2945.                 mainmenu "Color","","","","",""
  2946.                 addsubmenu 1,"Black",1059
  2947.                 addsubmenu 1,"White",1061
  2948.                 backcolor=0
  2949.                 menuitemgray 1059
  2950.              50
  2951.                 cls
  2952.                 color 1,backcolor
  2953.                 locate 10,30
  2954.                 print "Sample text..";
  2955.              100
  2956.                 a$=inkey$
  2957.                 if a$="" then goto 100
  2958.                 if len(a$)=1 then goto 100
  2959.                 if right$(a$,1)=chr$(59)
  2960.                   menuitemon 1060
  2961.                   menuitemgray 1059
  2962.                   backcolor=7
  2963.                   goto 50
  2964.                 elseif right$(a$,1)=chr$(60)
  2965.                                       44
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.                   menuitemon 1059
  2978.                   menuitemgray 1060
  2979.                   backcolor=0
  2980.                   goto 50
  2981.                 end if
  2982.                 goto 100
  2983.  
  2984.           This program defines one menu and then adds two items to
  2985.           it.  These menu items allow the user to clear the screen
  2986.           to either black or white.  The program disables the menu
  2987.           item for whatever color the screen currently is.
  2988.  
  2989.           The menu could be define in the following way also.
  2990.  
  2991.                   mainmenu "&Color","","","","",""
  2992.                   addsubmenu 1,"&Black",1059
  2993.                   addsubmenu 1,"&White",1061
  2994.  
  2995.           The apersand (&) allows you to define which character in
  2996.           the menu will be underlined which allows the user to
  2997.           select this item by pressing the ALT key and this letter.
  2998.           This IS NOT the keycode which will be returned to your
  2999.           program.  This keycode will always be the one given as the
  3000.           last parameter of the addsubmenu command.
  3001.  
  3002.           We could also define the menu like this:
  3003.  
  3004.                   mainmenu "&Color","","","","",""
  3005.                   addsubmenu 1,"&Black",1059
  3006.                   addsubmenu 1,"",0
  3007.                   addsubmenu 1,"&White",1061
  3008.  
  3009.           The 3rd line (addsubmenu 1,"",0) creates a line seperator
  3010.           in the menu bar.  It can not be selected by the user.
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.                                       45
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.           PROGRAMMING DIALOG BOXES
  3045.           -------------------------------------------------------
  3046.  
  3047.           Dialog Boxes are 'pop-up' boxes used to get information
  3048.           from the user.  Dialog Boxes are made up of one or more
  3049.           'Controls'.  A Control may be a pushbutton, radio button,
  3050.           check box, edit field or various other items.
  3051.  
  3052.           BasicBasic contains 3 types of Dialogs boxes: 1) File open
  3053.           for read; 2) File open for save; 3) User defined.
  3054.  
  3055.           Dialogs automatically preserve the original screen over
  3056.           which they are place.  The original screen is restored
  3057.           when the dialog closes.
  3058.  
  3059.           Under both DOS and Windows a user can selected and enter
  3060.           items in a Dialog box without a mouse.  Use the TAB key to
  3061.           move from item to item.  Arrow keys select items in a
  3062.           list.  Space bar sets/resets radio buttons and checkboxes.
  3063.           Pressing Enter exists the dialog box if on a pushbutton.
  3064.  
  3065.  
  3066.           FILE OPEN FOR READ DIALOG BOX:
  3067.  
  3068.           This dialog box is available under any version of DOS, but
  3069.           if running under Windows it is only available under
  3070.           Windows Version 3.1 or later.  (See the SYSTEM function
  3071.           for information on determining Windows version.)  This is
  3072.           a very easy to use dialog box which prompts the operator
  3073.           to select a file to be read from.  The format of the
  3074.           command is as follows:
  3075.  
  3076.              OPENFILEREAD filterstr,filenamestr,directorystr,title
  3077.  
  3078.           An example would be:
  3079.  
  3080.                  filter$="document"+chr$(0)+"*.doc"+chr$(0)+chr$(0)
  3081.                  filename$="readme.doc"
  3082.                  directory$="c:\windows"
  3083.                  title$="My open dialog"
  3084.                  OPENFILEREAD FILTER$,FILENAME$,DIRECTORY$,TITLE$
  3085.  
  3086.           Filter defines which file names will be display for the
  3087.           user.  Each filter is a pair of text strings seperated by
  3088.           a chr$(0) character.  The first string of the pair is a
  3089.           description of the filter and the second part is the
  3090.           filter (e.g. *.BAT).  You may have more than one filter;
  3091.           however, in DOS, only the first filter is used.
  3092.  
  3093.           Filename defines the default file (if any).
  3094.  
  3095.           Directory defines the default pathname (if any).
  3096.  
  3097.                                       46
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.           Title is an optional title for the dialog box.
  3110.  
  3111.           Upon leaving the dialog box the following functions return
  3112.           the result:
  3113.  
  3114.              DIALOG$(100) has the file name
  3115.              DIALOG$(101) has the pathname
  3116.              DIALOG$(102) is set to 1 if successful, 0 else
  3117.              DIALOG$(103) is set to 1 if Cancel button pressed
  3118.                           102 and 103 will both be zero if an
  3119.                           error occurs.
  3120.  
  3121.           If the dialog was successful then the default disk and
  3122.           directory will have been changed to the pathname returned
  3123.           in DIALOG$(101).  The path is returned for informational
  3124.           purposes only.
  3125.  
  3126.  
  3127.           FILE OPEN FOR WRITE DIALOG BOX:
  3128.  
  3129.           This dialog box is available under any version of DOS, but
  3130.           if running under Windows it is available only under
  3131.           Windows 3.1 or later.  This dialog box is similar to
  3132.           OPENFILEREAD.  The primary difference is that OPENFILEREAD
  3133.           requires that the file exist, while OPENFILEWRITE does
  3134.           not.
  3135.  
  3136.              OPENFILESAVE filterstr,filenamestr,directorystr,title
  3137.  
  3138.           An example would be:
  3139.  
  3140.                  filter$="document"+chr$(0)+"*.doc"+chr$(0)+chr$(0)
  3141.                  filename$="readme.doc"
  3142.                  directory$="c:\windows"
  3143.                  title$="My open dialog"
  3144.                  OPENFILEREAD FILTER$,FILENAME$,DIRECTORY$,TITLE$
  3145.  
  3146.  
  3147.           USER DEFINED DIALOG BOXES:
  3148.  
  3149.           To create and use a dialog box you must do the following
  3150.           steps:  1) Create a string array to hold Control
  3151.           information;  2) Define one control in each string array
  3152.           element;  3) Execute the dialog using the DIALOG
  3153.           statement;  4) Use information acquired in Dialog.
  3154.  
  3155.           The DIALOG statement looks like this:
  3156.  
  3157.             DIALOG, a$(),x,y,xlen,ylen,id,string name
  3158.  
  3159.             where:
  3160.  
  3161.               a$() = a string array
  3162.               x    = x position of upper left corner
  3163.                                       47
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.               y    = y position of upper left corner
  3176.               xlen = x length
  3177.               ylen = y length
  3178.               id   = unique identifier for control (1 -> 255)
  3179.               string name = Text to put at top of Dialog box
  3180.  
  3181.           X, y, xlen, ylen are in pixels in graphics mode or in
  3182.           character locations in text mode (SCREEN 0).
  3183.  
  3184.           An example would be:
  3185.  
  3186.             DIALOG  A$(0),10,10,200,100,100,"GET INFO"
  3187.  
  3188.           Each Control is then defined in one element of the string
  3189.           array.  The general format for controls is:
  3190.  
  3191.                controltype,x,y,xlen,ylen,id,text
  3192.  
  3193.           Commas between each element are required.
  3194.  
  3195.           An example would be:
  3196.  
  3197.              a$(0)="pushbutton,5,40,100,30,100,Exit"
  3198.  
  3199.              This would define a pushbutton labeled "Exit" which
  3200.              would be 100 units wide and 30 high.  It's origin would
  3201.              be 5 units from the left and 40 units from the top of
  3202.              the Dialog Box.  It would have identifier number 100.
  3203.              We could not use this identifier for any other Control.
  3204.  
  3205.           Controls defined in BasicBasic are:
  3206.  
  3207.                  pushbutton
  3208.                  radiobutton
  3209.                  checkbox
  3210.                  edit
  3211.                  ltext
  3212.                  group
  3213.                  ok
  3214.                  filename
  3215.                  filelist
  3216.                  filepath
  3217.  
  3218.  
  3219.           All Controls have the general format shown above for
  3220.           Pushbutton.  What follows is a description of each Control
  3221.           recognized and any special format needed to define it or
  3222.           any special way it is used.
  3223.  
  3224.           PUSHBUTTON:  Pushbuttons cause the Dialog to end.  You can
  3225.           use the DIALOG$ function to determine which pushbutton
  3226.           ended the Dialog.
  3227.  
  3228.           RADIOBUTTON: Radio buttons can be used to allow the user
  3229.                                       48
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.           to supply additional information.  Radiobuttons DO NOT end
  3242.           the dialog.  You can optionally set the state of a
  3243.           pushbutton when defining it:
  3244.  
  3245.                 a$(1)="RADIOBUTTON,10,10,200,30,101,YES,1"
  3246.  
  3247.              This defines a radio button at 10,10 with width 200 and
  3248.              height 30.  The control identifier is 101 and the text
  3249.              YES will be display in it.  The '1' at the end
  3250.              specifies that this button will be enabled at start.
  3251.              Omitting this number or making it '0' means the button
  3252.              is NOT enabled at start.
  3253.  
  3254.              Radio Buttons may be grouped.  In a group if one button
  3255.              is pushed all the rest are cleared.  BasicBasic
  3256.              considers Radiobuttons with consecutive id's to be part
  3257.              of a group.  The following three buttons are part of a
  3258.              group:
  3259.  
  3260.                 a$(1)="RADIOBUTTON,10,10,200,30,101,BLACK"
  3261.                 a$(2)="RADIOBUTTON,10,50,200,30,102,RED,1"
  3262.                 a$(3)="RADIOBUTTON,10,90,200,30,103,WHITE"
  3263.  
  3264.              In this group RED will be enabled at start.
  3265.  
  3266.           CHECKBOX: Check buttons are similar to Radio buttons
  3267.           except they may not be grouped and hence do not clear any
  3268.           other Checkbox when one is checked.
  3269.  
  3270.           EDIT: Edit fields allow the operator to input text.  The
  3271.           text string at the end of the definition is the default
  3272.           text entry.  To provide a label for an EDIT control you
  3273.           will have to use LTEXT defined later.
  3274.  
  3275.           LTEXT: Ltext displays static text left justified.  You may
  3276.           display text anywhere in the Dialog box and this is
  3277.           particulary used for providing a header for an Edit
  3278.           Control.  Here is an example:
  3279.  
  3280.              A$(1)="LTEXT,10,10,200,30,103,Enter Name"
  3281.  
  3282.           GROUP:  Group draws a box on the screen and provides a
  3283.           label at the top of the box.  It is particularly useful
  3284.           for providing a visual indicator of Radio button groups.
  3285.           An example to draw a box at 10,10 100 units wide by 50
  3286.           high would be:
  3287.  
  3288.              A$(1)="GROUP,10,10,100,50,101,Colors"
  3289.  
  3290.           OK: OK is a special pushbutton.  It is defined the same
  3291.           way as any pushbutton.  If you have an OK control defined
  3292.           then the dialog will end if the user presses 'Enter' at
  3293.           any Edit field.  It is required when using the following
  3294.           file controls.  Only one OK control may be in a Dialog.
  3295.                                       49
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.           FILENAME:  This is a special Edit field used for getting a
  3309.           file name.  It is used in conjuction with OK, FILELIST,
  3310.           and FILEPATH controls.  The text element is the default
  3311.           file name.  The presence of a FILENAME control means that
  3312.           the Dialog box will not terminate until a name of an
  3313.           existing file is entered or a pushbutton other than the OK
  3314.           control is pushed.
  3315.  
  3316.              a$(1)="filename,10,10,200,30,101,CONFIG.SYS"
  3317.  
  3318.           FILENAMEW: This functions just like FILENAME, except if
  3319.           this control is used no check to see if the file exists is
  3320.           made before the Dialog terminates.  Only one
  3321.           FILENAME/FILENAMEW may be used in a Dialog.
  3322.  
  3323.  
  3324.           FILELIST:  This defines a box which will contain a display
  3325.           of files.  It is used in conjuction with OK, FILENAME, and
  3326.           FILEPATH controls.  The text element contains the DOS file
  3327.           search string.  The user may use the mouse to select files
  3328.           which will automatically be placed in the FILENAME (or
  3329.           FILENAMEW) control.  Only one FILELIST may be in a Dialog.
  3330.  
  3331.              a$(1)="filelist,10,10,200,200,101,*.bmp"
  3332.  
  3333.           FILEPATH:  This defines a string which will DISPLAY the
  3334.           current directory path being accessed.  It is used in
  3335.           conjuction with OK, FILENAME, and FILELIST.  The text
  3336.           element is the default path.  Only one FILEPATH may be in
  3337.           a Dialog.
  3338.  
  3339.              a$(1)="filepath,10,10,200,30,101,c:\windows"
  3340.  
  3341.  
  3342.           COLOR: This can be used to change the default dialog
  3343.           colors in DOS only!  The order of the colors is:  dialog
  3344.           background color, dialog foreground color, dialog selected
  3345.           color, button foreground color, radio button background
  3346.           color, push button background color.
  3347.  
  3348.              a$(1)="COLOR,0,1,4,5,6,7"
  3349.  
  3350.  
  3351.  
  3352.           The following example shows a dialog box:
  3353.  
  3354.              rem go into graphics mode
  3355.              screen 2
  3356.  
  3357.              dim control$(100)
  3358.  
  3359.              rem define controls
  3360.              control$(0)="ltext,10,10,100,30,100,Name:"
  3361.                                       50
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.              control$(1)="edit,110,10,200,30,101,"
  3374.              control$(2)="ltext,10,50,100,30,102,Address:"
  3375.              control$(3)="edit,110,50,200,30,103,"
  3376.              control$(4)="pushbutton,10,110,50,30,104,Done"
  3377.              control$(5)="radiobutton,130,110,110,25,105,Type A,1"
  3378.              control$(6)="radiobutton,130,134,110,25,106,Type B"
  3379.              control$(7)="group,118,80,180,90,107,Personality Type"
  3380.              control$(8)="checkbox,10,174,100,30,108,Widgets"
  3381.              control$(9)="checkbox,130,174,100,30,109,Gadgets,1"
  3382.              control$(10)="checkbox,250,174,100,30,110,Doodads"
  3383.  
  3384.              rem call dialog
  3385.              dialog control$(0),11,10,10,350,210,"Client Info"
  3386.  
  3387.              rem display results of dialog
  3388.              print "name=";dialog$(101)
  3389.              print "address=";dialog$(103)
  3390.              print "done=";dialog$(104)
  3391.              print "radio 1=";dialog$(105)
  3392.              print "radio 2=";dialog$(106)
  3393.              print "widgets=";dialog$(108)
  3394.              print "gadgets=";dialog$(109)
  3395.              print "doodads=";dialog$(110)
  3396.  
  3397.              input z
  3398.  
  3399.  
  3400.  
  3401.  
  3402.  
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.                                       51
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.  
  3440.           COMMUNICATIONS PROGRAMMING
  3441.           -------------------------------------------------------
  3442.           
  3443.           Here is a brief example of using a communications port.
  3444.  
  3445.             rem
  3446.             rem open communications port
  3447.             rem
  3448.             OPEN "COM1: 2400,N,8" FOR RANDOM AS #1 LEN=2048
  3449.  
  3450.           100
  3451.  
  3452.             rem
  3453.             rem get input from communications port
  3454.             rem
  3455.             t = LOC(1)
  3456.             IF t > 0 THEN
  3457.               a$=input$(t,1)
  3458.               if len(a$)>0 then
  3459.                 rem come here to display received characters
  3460.                 PRINT a$;
  3461.  
  3462.               ELSE
  3463.                 rem come here if some kind of comm error that kept
  3464.                 rem us from getting the waiting character.
  3465.  
  3466.               end if
  3467.  
  3468.             END IF
  3469.  
  3470.             rem
  3471.             rem get input from keyboard
  3472.             rem
  3473.  
  3474.             b$ = INKEY$
  3475.  
  3476.             IF b$ <> "" THEN
  3477.  
  3478.                 PRINT #1, b$;
  3479.  
  3480.             END IF
  3481.  
  3482.             GOTO 100
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.                                       52
  3494.  
  3495.  
  3496.  
  3497.  
  3498.  
  3499.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3500.  
  3501.  
  3502.  
  3503.  
  3504.  
  3505.  
  3506.  
  3507.           WINDOWS AND GRAPHICS
  3508.           -------------------------------------------------------
  3509.           
  3510.           In general programming graphics under Windows is the same
  3511.           as programming graphics under DOS.  However, because
  3512.           Windows mediates hardware access among different programs
  3513.           there are a few differences.
  3514.  
  3515.           COLORS
  3516.  
  3517.           Under DOS or Windows, BasicBasic provides a palette of 16
  3518.           colors.  Under DOS this palette is the hardware palette
  3519.           and you have full control to change them (depending on
  3520.           mode using either the COLOR or PALETTE statements).  Under
  3521.           Windows the palette is a 'logical' palette and only
  3522.           Windows controls where in the physical palette the logical
  3523.           palette entries are placed.  In addition, if you are
  3524.           running under standard VGA or less, Windows will not let
  3525.           you change the colors in the palette.  You are restricted
  3526.           to the 16 colors Windows defines.
  3527.  
  3528.           BasicBasic defaults to using the system palette.  This is
  3529.           a palette of 16 colors which Windows never changes.  This
  3530.           also means that your program cannot change them with the
  3531.           PALETTE or COLOR(in mode 8) commands.  If you want to
  3532.           change the standard colors you will have to use a
  3533.           'logical' palette.  In BasicBasic you do this using the
  3534.           SCREEN command.
  3535.  
  3536.           Using a logical palette has benefits and drawbacks.  As
  3537.           mentioned you can change the colors display.  This may be
  3538.           of use in animation.  However, there are serious
  3539.           drawbacks.  The PUT with any option except PSET will not
  3540.           work correctly.  This is explained below.  Also, when your
  3541.           program is not the 'active' window, Windows may remove
  3542.           your colors from the hardware palette resulting in some
  3543.           strange looking displays.  In addition, if this happens,
  3544.           the PAINT command may have completely unforseen
  3545.           consequences.  You can use the SYSTEM function to
  3546.           determine if your program is the active program.  When
  3547.           your program is active your colors will all be available
  3548.           for your use.
  3549.  
  3550.           Logical palettes do not support using the PUT graphics
  3551.           statement with the XOR, OR, or AND options.  If you use
  3552.           XOR the colors will not be as expected (though, as usual
  3553.           if you do 2 PUT statements with XOR the background will be
  3554.           restored).  The reason for this is that Windows may 'map'
  3555.           the logical palette entries to the physical palette anyway
  3556.           it likes.  If you must use XOR, use the default BasicBasic
  3557.           palette which is the system palette.
  3558.  
  3559.                                       53
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.           SCREEN MODES
  3573.  
  3574.           Under Windows you have access to the same screen modes as
  3575.           under DOS.  The COLOR and PALETTE statements work the same
  3576.           under DOS as under Windows.  In addition under Windows you
  3577.           have access to an additional screen mode: mode 1000.  In
  3578.           mode 1000 you are able to create new fonts.  Mode 1000
  3579.           gives you the highest possible graphics resolution.  Also
  3580.           the COLOR command is somewhat more flexible than under DOS
  3581.           screen modes.  The LOCATE and SCROLLAREA statements and
  3582.           functions POS, CSRLIN work differently in this mode.
  3583.  
  3584.           Also under Windows you have the option of specifying the
  3585.           size of the logical palette your program will have access
  3586.           to.  This is limited by the physical palette supported by
  3587.           your hardware.  Standard VGA supports only 16 palette
  3588.           entries.  Super VGA may (depending on memory) support up
  3589.           to 256 palette entries.  You could select 256 palette
  3590.           entires by using this command:
  3591.  
  3592.                       SCREEN 1000,256
  3593.  
  3594.           Windows actually only allows you to change 236 of the
  3595.           palette entries.  The other entries are defined by Windows
  3596.           as follows:
  3597.  
  3598.               0 - black          246 - cream
  3599.               1 - dark red       247 - lightish gray
  3600.               2 - dark green     248 - medium gray
  3601.               3 - dark yellow    249 - red
  3602.               4 - dark blue      250 - green
  3603.               5 - dark magenta   251 - yellow
  3604.               6 - dark cyan      252 - blue
  3605.               7 - light gray     253 - magenta
  3606.               8 - money green    254 - cyan
  3607.               9 - sky blue       255 - white
  3608.  
  3609.  
  3610.           NAKED WINDOWS
  3611.  
  3612.           When running under Windows you do not have exclusive
  3613.           access to the screen.  At any time your window may be
  3614.           hidden by another window appearing on the screen.  At some
  3615.           future time the operator may make your window reappear
  3616.           with the click of the mouse button.  When your window has
  3617.           been hidden and is then called to the front, Windows DOES
  3618.           NOT handle putting the contents of the window back in!
  3619.           All windows privides is the outline of the window.  This
  3620.           'naked' window must be filled in by either BasicBasic or
  3621.           your program.
  3622.  
  3623.           By default BasicBasic handles all window 'repainting'.
  3624.           BasicBasic remembers everything that your program sends to
  3625.                                       54
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.           the screen and when necessary repaints the window with
  3638.           this information.  In text mode (screen mode 0) a small
  3639.           buffer remembers each character on the screen.  In
  3640.           graphics mode BasicBasic maintains a larger buffer
  3641.           containing a duplicate of each pixel on the screen.  This
  3642.           buffer can take up quite a bit of space.(On a 640 x 200 16
  3643.           color display this requires 128,000 bytes).  Ordinarily
  3644.           you don't need to worry about this.  If your program isn't
  3645.           going to be in memory very long, or has a small window,
  3646.           who cares?
  3647.  
  3648.           If you are short of memory or have a very large window
  3649.           which is going to stay around all day you may not like
  3650.           this arrangement.  In this case you should use the ON
  3651.           PAINT statement.  This statement tells BasicBasic to NOT
  3652.           keep a copy of the display; that you are going to handle
  3653.           repainting when necessary.  Here is an example:
  3654.  
  3655.                  ON PAINT GOSUB 1000
  3656.                  SCREEN 8
  3657.                  sc=8
  3658.                  gosub drawmyscreen
  3659.           50
  3660.                  if inkey$="" then goto 50
  3661.                  STOP
  3662.  
  3663.           1000
  3664.                  gosub drawmyscreen
  3665.                  RETURN
  3666.  
  3667.           drawmyscreen:
  3668.                  is sc=0 then return
  3669.                  locate 1,1
  3670.                  print "Now is the time to draw circles..."
  3671.                  circle (50,50),25,4
  3672.                  circle (75,75),50,1
  3673.                  circle (400,50,40,2
  3674.                  circle (500,100,75,3
  3675.                  return
  3676.  
  3677.           Here are some rules to remember about using the ON PAINT
  3678.           statement:
  3679.  
  3680.             - Use it before your SCREEN statement.  BasicBasic
  3681.               creates the screen duplicate during the SCREEN
  3682.               statement. It will, if necessary, erase it during the
  3683.               ON PAINT statement, but why go to the bother.
  3684.  
  3685.             - NEVER use any input commands, file commands, com
  3686.               commands, etc in you ON PAINT handler.
  3687.  
  3688.             - Don't change variables in your ON PAINT handler that
  3689.               are used elsewhere in your program.  Remember that
  3690.               Windows ALWAYS calls your ON PAINT handler at the
  3691.                                       55
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.               WORST POSSIBLE TIME!
  3704.  
  3705.             - It is wise not to use the INPUT command in a program
  3706.               that has it's own ON PAINT handler.  BasicBasic will
  3707.               not rewrite what has been input so far.
  3708.  
  3709.             - Your ON PAINT handler may be called IMMEDIATELY after
  3710.               you issue the ON PAINT command.  Make sure you are
  3711.               ready.  Note the line IF SC=0 THEN RETURN in our
  3712.               example.  Try running this program without this line.
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.  
  3729.  
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.                                       56
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.  
  3770.           BITMAPS
  3771.           -------------------------------------------------------
  3772.  
  3773.           BasicBasic supports the loading and storing of device
  3774.           independent bitmap files as defined in Windows 3.
  3775.           BasicBasic supports bitmaps under EITHER DOS or Windows.
  3776.           You must be in graphics mode to load or store bitmaps.
  3777.           Windows (and SOME Windows applications) support a
  3778.           compressed bitmap format to save space.  BasicBasic also
  3779.           supports loading and store compressed bitmap files.
  3780.  
  3781.           A simple program to load a bitmap could be as follows (the
  3782.           file CARS.BMP is a standard bitmap file supplied with
  3783.           Windows).
  3784.  
  3785.                 screen 8
  3786.                 x=100
  3787.                 y=100
  3788.                 ffname$="c:\windows\cars.bmp"
  3789.                 loadbitmap ffname$,0,x,y,0,0,16,16,0,0,0
  3790.                 input z
  3791.  
  3792.           This example loads the upper left most 16 by 16 pixels of
  3793.           the bitmap and puts in on the screen starting at 100,100.
  3794.           If we had wanted to double the size of the graphic in the
  3795.           x direction we could have done the following load:
  3796.  
  3797.                 loadbitmap ffname$,0,x,y,0,0,16,16,0,2,0
  3798.  
  3799.           If we had wanted to skip every other line of pixels we
  3800.           could have done the following load:
  3801.  
  3802.                 loadbitmap ffname$,0,x,y,0,0,16,16,0,0,-2
  3803.  
  3804.           This would have loaded 16 lines of the bitmap, but only
  3805.           displayed every other one.
  3806.  
  3807.           BITMAPS AND COLORS
  3808.  
  3809.           With each device independent bitmap is stored information
  3810.           about the colors defined for that bitmap.  There may be
  3811.           information about 2 colors, 16 colors, 256 colors or
  3812.           16,777,216 colors.  BasicBasic supports the first 3 types
  3813.           of bitmaps.  The colors in the bitmap may or may not be
  3814.           the same as those defined in your current palette.  When
  3815.           you load a bitmap you might want to make sure that your
  3816.           palette has the colors necessary to correctly display the
  3817.           bitmap.  Alternately you can tell BasicBasic to attempt to
  3818.           match bitmap colors to your currently defined palette
  3819.           colors.  This is the easiest thing to do, though, it may
  3820.           not result in the best rendering of the graphic.
  3821.  
  3822.           In the examples we have used so far we have let BasicBasic
  3823.                                       57
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.           match colors for us.  We do this by setting the ninth
  3836.           parameter to 0.
  3837.  
  3838.                 cv=0
  3839.                 loadbitmap ffname$,0,x,y,0,0,16,16,cv,0,0
  3840.  
  3841.           We could also set cv to 1; in which case, BasicBasic would
  3842.           make no color correction and the existing palette colors
  3843.           would be used to display the bitmap.
  3844.  
  3845.           For maximum color compatibility you will want to load the
  3846.           colors from the bitmap and assign them you your logical
  3847.           palette.  The first step in this process is to determine
  3848.           how many colors the bitmap has defined.  You do this using
  3849.           the BITMAPH function.
  3850.  
  3851.             e.g.
  3852.                    dim a&(256)
  3853.                    a=bitmaph("C:\windows\cars.bmp",a&(0))
  3854.                    numcolorbits=a&(4)
  3855.                    if numcolorbits=2
  3856.                      print "2 colors defined"
  3857.                    elseif numcolorbits=4
  3858.                      print "16 colors defined"
  3859.                    elseif numcolorbits=8
  3860.                      print "256 colors defined"
  3861.                    else
  3862.                      print "colors explicitly defined for each bit"
  3863.                    end if
  3864.  
  3865.           You can determine how many colors can be displayed on your
  3866.           screen by using the SYSTEM function
  3867.  
  3868.                    maxcolors=system(5)
  3869.  
  3870.           If the bitmap has more colors than your screen can display
  3871.           then the best course to follow is to allow BasicBasic to
  3872.           convert colors for you.  If, on the other, hand you have
  3873.           enough room in your palette to display all the colors
  3874.           defined in the bitmap then you can load them using the
  3875.           BITMAPC function and assign them using the PALETTE
  3876.           command.
  3877.  
  3878.  
  3879.                  screen 8
  3880.  
  3881.                  dim a&(256)
  3882.  
  3883.                  ffname$="c:\windows\cars.bmp"
  3884.  
  3885.                  a=bitmaph(ffname$,a&(0))
  3886.                  x=0
  3887.                  y=0
  3888.                  pxsize=a&(1)
  3889.                                       58
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.                  pysize=a&(2)
  3902.                  colorbits=a&(4)
  3903.                  if colorbits=2
  3904.                     colors=2
  3905.                  elseif colorbits=4
  3906.                     colors=16
  3907.                  elseif colorbits=8
  3908.                     colors=256
  3909.                  else
  3910.                     print "bitmap not supported.."
  3911.                     stop
  3912.                  end if
  3913.                  maxcolors=system(5)
  3914.  
  3915.                  if (colors<=maxcolors)
  3916.                    a=bitmapc(ffname$,a&(0))
  3917.                    if colors>236 then
  3918.                     for i=10 to 246
  3919.                       palette i,a&(i)
  3920.                     next i
  3921.                    else
  3922.                     for i=0 to colors
  3923.                      palette i,a&(i)
  3924.                     next i
  3925.                    end if
  3926.                    cv=0
  3927.                  else
  3928.                    cv=1
  3929.                  end if
  3930.  
  3931.                  x=100
  3932.                  y=100
  3933.                  ymult=2
  3934.                  loadbitmap ffname$,0,x,y,0,0,16,16,cv,0,0
  3935.  
  3936.                  input z
  3937.  
  3938.           Note to Windows Users:  With a 256 color palette, Windows
  3939.           only allows 236 to be changed by the user.  The first 10
  3940.           and and last 10 are fixed.  This is why we only assign 236
  3941.           colors in the example above.
  3942.  
  3943.           STORING BITMAPS
  3944.  
  3945.           If you have a graphic displayed on the screen you can save
  3946.           it to a bitmap file using the STOREBITMAP command.  It
  3947.           will be saved in the same color resolution as your screen.
  3948.           You can optionally tell BasicBasic to store the file in
  3949.           compressed format to save space.  Note, however, that a
  3950.           complex picture with much fine detail may compress to a
  3951.           LARGER file than the original!  Also it will take longer
  3952.           to store a bitmap using compression, than without.
  3953.  
  3954.  
  3955.                                       59
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  3962.  
  3963.  
  3964.  
  3965.  
  3966.  
  3967.                screen 8
  3968.                line (0,0)-(100,100),1
  3969.                x=0
  3970.                y=0
  3971.                pxsize=100
  3972.                pysize=100
  3973.                cp=1          : rem compress it
  3974.                storebitmap 0,ffname$,x,y,pxsize,pysize,cp,0
  3975.  
  3976.                input z
  3977.  
  3978.  
  3979.  
  3980.  
  3981.  
  3982.  
  3983.  
  3984.  
  3985.  
  3986.  
  3987.  
  3988.  
  3989.  
  3990.  
  3991.  
  3992.  
  3993.  
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.                                       60
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034.           WINDOWS AND FONTS
  4035.           -------------------------------------------------------
  4036.  
  4037.           To create fonts in Windows you must have selected Screen
  4038.           mode 1000.  In this mode some statements and commands work
  4039.           differently.  LOCATE x,y now position by dot position,
  4040.           rather than character position.  POS and CSRLIN return the
  4041.           corresponding pixel position rather than character
  4042.           position.
  4043.  
  4044.           See the sample program SAMPLEF1.BAS for some examples of
  4045.           font creation.
  4046.  
  4047.           If you are going to create fonts you should NOT use the
  4048.           WINDOWS SIZE metacommand.  Instead use POSITION as
  4049.           necessary to adjust the size ofyour window.
  4050.  
  4051.           You may create up to 10 fonts, number 1 through 10.  Font
  4052.           number 0 is reserved for BasicBasic's default font.  You
  4053.           create a font using the CREATEFONT command.  Once you have
  4054.           created a font you must select it with the SELECTFONT
  4055.           command.  You may get information on the currently
  4056.           selected font using the FONT and FONT$ functions.
  4057.  
  4058.           The CREATEFONT statement has a lot of arguments.  However,
  4059.           it is not as complex to use as it looks.  Usually you are
  4060.           only interested in specifying one or two things about the
  4061.           font; such as height.  In this case you can set all other
  4062.           arguments to 0.  Below is a complete description of the
  4063.           CREATEFONT command.
  4064.  
  4065.           Argument P10 must be set to 3 (OEM Font) to use most of
  4066.           the built in Windows fonts!
  4067.  
  4068.           CREATEFONT
  4069.           p1,p2,p3,p4,p5,p6,p7,p8.p9.p10,p11.p12,p13,p14,p15$
  4070.  
  4071.             p1 = Font number to be created.
  4072.                  A number from 1 to 10.
  4073.             p2 = Font height (in pixels).
  4074.                  Desired height of characters.  This specifies the
  4075.                  line spacing.
  4076.             p3 = Font width
  4077.                  Desired width of characters.  Usually set to 0
  4078.             p4 = escapement
  4079.                  Which way the text goes.
  4080.                  0 - right
  4081.                  900 - up
  4082.                  1800 - right to left
  4083.                  2700 - down
  4084.             p5 = orientation
  4085.                  0 = Normal
  4086.                  900 = tipped 90 degrees to the left
  4087.                                       61
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.                  1800 = upside down
  4100.                  2700 = tipped 90 degrees to the right
  4101.             p6 = weight
  4102.                    0 = don't care
  4103.                  100 = thin
  4104.                  200 = extralight
  4105.                  300 = light
  4106.                  400 = normal
  4107.                  500 = medium
  4108.                  600 = semibold
  4109.                  700 = boldface
  4110.                  800 = extra bold
  4111.                  900 = heavy
  4112.             p7 = italic
  4113.                  When nonzero this specifies italics
  4114.             p8 = underline
  4115.                  When nonzero this specifies underlining
  4116.             p9 = strikeout
  4117.             p10 = character set
  4118.                   0 = ANSI character set
  4119.                   1 = SYMBOL character set
  4120.                   2 = Japanese Kanji
  4121.                   3 = OEM character set
  4122.           ->          Most Windows fonts are OEM fonts (e.g. script)
  4123.             p11 = output precision
  4124.                   Specifies how Windows should attempt to match
  4125.                   desired font sizes and characters with actual
  4126.                   fonts.  Not currently defined.  Make 0
  4127.             p12 = clip precision
  4128.                   Not currently defined.  Make 0.
  4129.             p13 = quality
  4130.                   Instruction to Windows on how to match fonts.
  4131.                   0 - Default Quality.  Don't make bigger that
  4132.                       desired.
  4133.                   1 - Draft Quality.
  4134.                   2 - Proof Quality.  This is the best quality,
  4135.                       but size may be smaller than desired.
  4136.             p14 = pitch and family
  4137.                   The two low order bits specify the pitch of the
  4138.                   font.
  4139.                     0 = Default
  4140.                     1 = Fixed pitch
  4141.                     2 = Variable
  4142.                   The four high order bits specify the font family.
  4143.                     0 = don't care
  4144.                     &H10 = Roman
  4145.                     &H20 = Swiss
  4146.                     &H30 = Modern
  4147.                     &H40 = Script
  4148.                     &H50 = Decorative
  4149.             p15$ = "face name"
  4150.                   This is the name of the typeface.  You do not need
  4151.                   to specify this.  If you do it takes priority over
  4152.                   any other options you specify (such as height).
  4153.                                       62
  4154.  
  4155.  
  4156.  
  4157.  
  4158.  
  4159.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4160.  
  4161.  
  4162.  
  4163.  
  4164.  
  4165.                   Examples of face names are COURIER, TMS RMN, etc.
  4166.  
  4167.           Here is an example of a CREATEFONT command which creates a
  4168.           font 60 pixels high.  All other parameters are left at
  4169.           default.
  4170.  
  4171.               CREATEFONT 1,60,0,0,0,0,0,0,0,0,0,0,0,0,""
  4172.  
  4173.           To print with this font you would first have to select it.
  4174.  
  4175.               SELECTFONT 1
  4176.  
  4177.  
  4178.           When you create a font Windows tries to match the
  4179.           characteristics you specify in the CREATEFONT command.  It
  4180.           may not be able to in all cases.  Perhaps you specify an
  4181.           incompatible height and width.  In these cases Windows
  4182.           gets as close as it can.  If some parameter is important
  4183.           to your application you should check to make sure the font
  4184.           you created meets your requirements.  Using the FONT
  4185.           function you can examine the selected font.
  4186.  
  4187.           FONT(n)
  4188.  
  4189.               n    returns
  4190.              ---   ----------------------------------------------
  4191.               1    character height
  4192.               2    Ascent
  4193.               3    Descent
  4194.               4    Internal Leading
  4195.               5    Extern Leading
  4196.               6    Average Character Width
  4197.               7    Maximum Character Width
  4198.               8    Weight
  4199.               9    Italic
  4200.               10   Underline
  4201.               11   Strikeout
  4202.               12   First character
  4203.               13   Last character
  4204.               14   Default character
  4205.               15   Break character
  4206.               16   Pitch and Family
  4207.               17   Character set
  4208.               18   Overhang
  4209.               19   Digitized Aspect x
  4210.               20   Digitized Aspect y
  4211.  
  4212.           There is another function which will return the face name.
  4213.  
  4214.           FONT$(n)
  4215.  
  4216.               n    returns
  4217.              ---   ----------------------------------------
  4218.               1    face name
  4219.                                       63
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.  
  4232.  
  4233.  
  4234.           If you need additional information on fonts (or Windows
  4235.           programming in general), a useful reference is 'Windows
  4236.           API Bible' by James L. Conger.
  4237.  
  4238.  
  4239.  
  4240.  
  4241.  
  4242.  
  4243.  
  4244.  
  4245.  
  4246.  
  4247.  
  4248.  
  4249.  
  4250.  
  4251.  
  4252.  
  4253.  
  4254.  
  4255.  
  4256.  
  4257.  
  4258.  
  4259.  
  4260.  
  4261.  
  4262.  
  4263.  
  4264.  
  4265.  
  4266.  
  4267.  
  4268.  
  4269.  
  4270.  
  4271.  
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.  
  4285.                                       64
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.  
  4299.           CHAINING AND COMMON
  4300.           -------------------------------------------------------
  4301.  
  4302.           Here are examples of two programs, CHAIN1 and CHAIN2,
  4303.           which pass variables back and forth in common.
  4304.  
  4305.  
  4306.               CHAIN1
  4307.  
  4308.                   common a,b,c,d$(),c()
  4309.                   if a=0 then
  4310.                     cls
  4311.                     a=1
  4312.                     dim d$(10)
  4313.                     dim c(20)
  4314.                     d$(5)="This is d$(5)"
  4315.                   end if
  4316.                   print "press any key to go to chain 2"
  4317.                 100
  4318.                   a$=inkey$
  4319.                   if a$="" then goto 100
  4320.                   chain "chain2.exe"
  4321.  
  4322.  
  4323.               CHAIN2
  4324.  
  4325.                   common a,b,c,d$(),c()
  4326.                   b=b+1
  4327.                   print "this is chain 2"
  4328.                   print "b=";b;
  4329.                   print d$(5)
  4330.                   input z
  4331.                   chain "chain1.exe"
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.  
  4344.  
  4345.  
  4346.  
  4347.  
  4348.  
  4349.  
  4350.  
  4351.                                       65
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4358.  
  4359.  
  4360.  
  4361.  
  4362.  
  4363.           
  4364.           DEFAULT WINDOWS FONT
  4365.           -------------------------------------------------------
  4366.  
  4367.           The following discussion is current for Windows Version
  4368.           3.1.  The concepts discussed are applicable for Version
  4369.           3.0, however, font file names are different for that
  4370.           version.  This section is only relevant when running in
  4371.           screen MODE 0 (the default).
  4372.  
  4373.           BasicBasic selects the OEM Fixed font closest in size to
  4374.           the system font size used in menus, buttons, etc.  If you
  4375.           desire a different font size when running a BasicBasic
  4376.           program you can select from available fonts in the System
  4377.           Menu.  You may also mark a given font size to be the new
  4378.           default for that program.
  4379.  
  4380.           Depending on how you configured your system there may be
  4381.           only one OEM font installed.  Windows 3.1 comes with an
  4382.           assortment of OEM fonts.  The file DOSAPP.FON contains the
  4383.           fonts used by Windows to run DOS in a window and are good
  4384.           for use with BasicBasic.  If this file is not in you
  4385.           windows system directory (e.g. WINDOWS\SYSTEM) then your
  4386.           can copy it from your distributions disks and then use the
  4387.           Control Panel Fonts accessory to install them (These fonts
  4388.           have the name 'MS-DOS CP 437').
  4389.  
  4390.           IMPORTANT INFORMATION FOR 386 ENHANCED MODE:  If you use
  4391.           the MS-DOS prompt in 386 Enhanced mode you will need to
  4392.           make a change in your SYSTEM.INI file to use multiple size
  4393.           fonts in BasicBasic.  As mentioned previously Windows does
  4394.           not normally permanently install the fonts from
  4395.           DOSAPP.FON.  As was indicated you can do this from the
  4396.           Control Panel Fonts accessory.  HOWEVER, you will find
  4397.           that each time you EXIT the MS-DOS prompt these fonts will
  4398.           be REMOVED from the system.  This is because Windows does
  4399.           not expect these fonts to be present and there is a
  4400.           control line in SYSTEM.INI which explicitly tells it to
  4401.           load and unload them when running the MS-DOS prompt.  Once
  4402.           you have installed these fonts you can keep Windows from
  4403.           un-installing them by removing the following line from the
  4404.           [386Enh] section of SYSTEM.INI:
  4405.  
  4406.                    WOAFONT=DOSAPP.FON
  4407.  
  4408.  
  4409.           FONTS AND BUTTONS: This discussion applies only to buttons
  4410.           which are defined by the user to be one line high.  If you
  4411.           select a font smaller than the system font for use in a
  4412.           BasicBasic program the text in any buttons you have would
  4413.           be too crowded in the button space available.   BasicBasic
  4414.           corrects this problem in one of two ways.  1) If you
  4415.           system font is only slightly larger than the font selected
  4416.           in BasicBasic then any text in the buttons will be made
  4417.                                       66
  4418.  
  4419.  
  4420.  
  4421.  
  4422.  
  4423.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4424.  
  4425.  
  4426.  
  4427.  
  4428.  
  4429.           all upper case so no 'descenders' will be outside the
  4430.           button area.  2) If the system font is quite a bit larger
  4431.           than the selected font then BasicBasic will not use the
  4432.           standard Windows button design.  Instead it will draw a
  4433.           'simplified' button which can hold the small text of the
  4434.           font.
  4435.           
  4436.  
  4437.  
  4438.  
  4439.  
  4440.  
  4441.  
  4442.  
  4443.  
  4444.  
  4445.  
  4446.  
  4447.  
  4448.  
  4449.  
  4450.  
  4451.  
  4452.  
  4453.  
  4454.  
  4455.  
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.  
  4462.  
  4463.  
  4464.  
  4465.  
  4466.  
  4467.  
  4468.  
  4469.  
  4470.  
  4471.  
  4472.  
  4473.  
  4474.  
  4475.  
  4476.  
  4477.  
  4478.  
  4479.  
  4480.  
  4481.  
  4482.  
  4483.                                       67
  4484.  
  4485.  
  4486.  
  4487.  
  4488.  
  4489.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.           ERROR MESSAGES
  4497.           -------------------------------------------------------
  4498.  
  4499.           Compile errors will give a description of the problem and
  4500.           display the line where the error occurred.
  4501.  
  4502.           Runtime errors are divided into two classes.  Fatal errors
  4503.           always cause execution of the program to cease.
  4504.           Recoverable errors cause program execution to cease if
  4505.           SETERRLEVEL is 7, overwise execution continues and the
  4506.           error number is placed in the system variable ERR.
  4507.           SETERRLEVEL 7 is the default.
  4508.  
  4509.           When runtime errors are displayed they are accompanied by
  4510.           a runtime address.  The compiler will optionally output a
  4511.           list of runtime addresses for each statement.  These
  4512.           addresses will be contained in a file with the same name
  4513.           as the source file and an extension of .TMP.  In Windows
  4514.           you select debug output by selecting the Debug Output box.
  4515.           In the DOS version of the compiler you select debug output
  4516.           by putting a /D in the command line (e.g. BB MYPROG /D).
  4517.  
  4518.           Fatal Errors:
  4519.  
  4520.                error number              description
  4521.                ------------              -----------
  4522.  
  4523.                   236         Out of memory
  4524.                   503         READ is attempting to read wrong kind
  4525.                               of data.
  4526.                   501
  4527.                   ...
  4528.                   522         Internal runtime errors.
  4529.                   523         Wrong number of array elements or
  4530.                               array not dimensioned.
  4531.                   524         Out of free space.
  4532.                   525         Out of string space.
  4533.                   526         Return without gosub
  4534.                   527         Not enough memory for menu
  4535.  
  4536.  
  4537.           Recoverable Errors:
  4538.  
  4539.                   1000        Error attempting to open file
  4540.                   1001        Attempt to read past end of file
  4541.                   1002        File not open
  4542.                   1003        File read error (probably hardware)
  4543.                   1004        ASC function on empty string
  4544.                   1005        Divide by zero
  4545.                   1006        Out of data during READ
  4546.                   1007        File already open
  4547.                   1008        No available file control block
  4548.                   1009        Error attempting to open file
  4549.                                       68
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.                   1010        File mode error on read
  4562.                   1011        File mode error on write
  4563.                   1012        Bad file number
  4564.                   1013        Path not found
  4565.                   1014        RMDIR error
  4566.                   1015        MKDIR error
  4567.                   1016        KILL error
  4568.                   1017        FILE BUFFER ERROR
  4569.                   1018        INVALID FIELD DATA
  4570.                   1019        FIELD OVERFLOW
  4571.                   1020        FILE ERROR
  4572.                   1021        COMMUNICATIONS OPEN ERROR
  4573.                   1022        CREATE BUTTON ERROR
  4574.                   1023        BAD SCREEN MODE IN SCREEN COMMAND
  4575.                   1025        GRAPHICS GET ARRAY ERROR
  4576.                   1026        GRAPHICS PUT ARRAY ERROR
  4577.                   1027        CREATE FONT ERROR
  4578.                   1028        NOT IN CORRECT SCREEN MODE
  4579.                   1029        INVALID COLOR/COLOR ATTRIBUTE
  4580.                   1030        ILLEGAL FONT NUMBER
  4581.                   1031        FONT NOT DEFINE
  4582.                   1032        PALETTE NOT DEFINED
  4583.                   1033        BITMAP COMPRESS ERROR
  4584.                   1034        NOT ENOUGH MEMORY TO LOAD BITMAP
  4585.                   1035        UNKNOWN ERROR READING BITMAP
  4586.                   1036        UNKNOWN BITMAP TYPE
  4587.                   1037        ERROR STORING BITMAP FILE
  4588.                   1038        BITMAPH FAILURE
  4589.                   1039        NOT A BITMAP FILE
  4590.                   1040        CREATEBITMAP-NOT ENOUGH MEMORY
  4591.                   1041        SELECTBITMAP ERROR
  4592.                   1042        COPYBITS ERROR
  4593.                   1043        INVALID CONTROL IN DIALOG
  4594.                   1044        NOT ENOUGH MEMORY FOR DIALOG
  4595.                   1045        CHDIR ERROR
  4596.                   1046        CHDRIVE ERROR
  4597.                   1047        CREATEBITMAP DATA INVALID
  4598.  
  4599.  
  4600.  
  4601.  
  4602.  
  4603.  
  4604.  
  4605.  
  4606.  
  4607.  
  4608.  
  4609.  
  4610.  
  4611.  
  4612.  
  4613.  
  4614.  
  4615.                                       69
  4616.  
  4617.  
  4618.  
  4619.  
  4620.  
  4621.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4622.  
  4623.  
  4624.  
  4625.  
  4626.  
  4627.  
  4628.           KEYBOARD CODES
  4629.           -------------------------------------------------------
  4630.  
  4631.           The following table shows the key codes returned by the
  4632.           INKEY$ function.  These key codes are returned as 1 byte.
  4633.  
  4634.             KEY  DECIMAL    KEY  DECIMAL    KEY  DECIMAL
  4635.                  KEY CODE        KEY CODE        KEY CODE
  4636.             ESC    27                       BKSP    8
  4637.             1      49        !     33       TAB     9
  4638.             2      50        @     64       ENTER   13
  4639.             3      51        #     35       SPACE   32
  4640.             4      52        $     36
  4641.             5      53        %     37
  4642.             6      54        ^     94
  4643.             7      55        &     38
  4644.             8      56        *     42
  4645.             9      57        (     40
  4646.             0      48        )     41
  4647.             -      45        _     95
  4648.             =      61        +     43
  4649.  
  4650.             KEY  DECIMAL    KEY  DECIMAL    KEY  DECIMAL
  4651.                  KEY CODE        KEY CODE        KEY CODE
  4652.              A     65        a     97
  4653.              B     66        b     98
  4654.              C     67        c     99
  4655.              D     68        d     100
  4656.              E     69        e     101
  4657.              F     70        f     102
  4658.              G     71        g     103
  4659.              H     72        h     104
  4660.              I     73        i     105
  4661.              J     74        j     106
  4662.              K     75        k     107
  4663.              L     76        l     108
  4664.              M     77        m     109
  4665.              N     78        n     110
  4666.              O     79        o     111
  4667.              P     80        p     112
  4668.              Q     81        q     113
  4669.              R     82        r     114
  4670.              S     83        s     115
  4671.              T     84        t     116
  4672.              U     85        u     117
  4673.              V     86        v     118
  4674.              W     87        w     119
  4675.              X     88        x     120
  4676.              Y     89       y      121
  4677.              Z     90       z      122
  4678.  
  4679.  
  4680.  
  4681.                                       70
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4688.  
  4689.  
  4690.  
  4691.  
  4692.  
  4693.           The following table shows the extended key codes returned
  4694.           by the INKEY$ function.  These key codes are returned as 2
  4695.           characters.  In this case the first character will be 0.
  4696.           
  4697.                     KEY   DECIMAL
  4698.                           KEY CODE
  4699.                     ----  ------
  4700.                      F1    0 59
  4701.                      F2    0 60
  4702.                      F3    0 61
  4703.                      F4    0 62
  4704.                      F5    0 63
  4705.                      F6    0 64
  4706.                      F7    0 65
  4707.                      F8    0 66
  4708.                      F9    0 67
  4709.                      F10   0 68
  4710.  
  4711.                      CTRL-F1   0   94
  4712.                      CTRL-F2   0   95
  4713.                      CTRL-F3   0   96
  4714.                      CTRL-F4   0   97
  4715.                      CTRL-F5   0   98
  4716.                      CTRL-F6   0   99
  4717.                      CTRL-F7   0  100
  4718.                      CTRL-F8   0  101
  4719.                      CTRL-F9   0  102
  4720.                      CTRL-F10  0  103
  4721.                      SHIFT-F1  0   84
  4722.                      SHIFT-F2  0   85
  4723.                      SHIFT-F3  0   86
  4724.                      SHIFT-F4  0   87
  4725.                      SHIFT-F5  0   88
  4726.                      SHIFT-F6  0   89
  4727.                      SHIFT-F7  0   90
  4728.                      SHIFT-F8  0   91
  4729.                      SHIFT-F9  0   92
  4730.                      SHIFT-F10  0  93
  4731.                      HOME       0  71
  4732.                      UP ARROW   0  72
  4733.                      PGUP       0  73
  4734.                      LEFT ARROW 0  75
  4735.                      RIGHT ARR  0  77
  4736.                      END        0  79
  4737.                      DOWN ARROW 0  80
  4738.                      PGDN       0  81
  4739.                      INS        0  82
  4740.                      DEL        0  83
  4741.                      CTRL-HOME  0  119
  4742.                      CTRL-PGUP  0  132
  4743.                      CTRL-LEFT  0  115
  4744.                      CTRL-RIGHT 0  116
  4745.                      CTRL-END   0  117
  4746.                      CTRL-PGDN  0  118
  4747.                                       71
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.           BasicBasic is copyright (c) 1992, 1993 by Mark Davidsaver
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.           Windows is a registered trademark of Microsoft
  4762.           Corporation.
  4763.  
  4764.  
  4765.  
  4766.  
  4767.  
  4768.  
  4769.  
  4770.  
  4771.  
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784.  
  4785.  
  4786.  
  4787.  
  4788.  
  4789.  
  4790.  
  4791.  
  4792.  
  4793.  
  4794.  
  4795.  
  4796.  
  4797.  
  4798.  
  4799.  
  4800.  
  4801.  
  4802.  
  4803.  
  4804.  
  4805.  
  4806.  
  4807.  
  4808.  
  4809.  
  4810.  
  4811.  
  4812.  
  4813.                                       72
  4814.  
  4815.  
  4816.  
  4817.  
  4818.  
  4819.